华为机试——1.字串转换

来源:互联网 发布:淘宝主图尺寸高度 编辑:程序博客网 时间:2024/05/01 19:12
/*1.字串转换问题描述:将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现算。  要求实现函数:  void convert(char *input,char* output)  【输入】  char *input , 输入的字符串  【输出】  char *output ,输出的字符串  【返回】 无  示例  输入:char*input="abcd"   输出:char*output="bcde"  输入:char*input="abbbcd"   输出:char*output="bcdcde"*///《分析》//输入一个字符input[i],则根据要求,//若第1次出现,则输出字符为(input[i]-'a'+1)%26+'a';//若连续第2次出现,则输出字符为(input[i]-'a'+2)%26+'a'。#include <iostream>using namespace std;void convert(char *input,char* output){int len = strlen(input);cout << len << endl;if(len == 0)//输入为空.return;char ch;char temp = input[0];output[0] = (input[0]-'a'+1)%26+'a';int cnt = 1;for(int i = 1;i < len;i++){ch = input[i];if(temp == input[i])cnt++;else{cnt = 1;temp = input[i];}if(cnt%2 == 1)//出现1次或连续第奇数次出现.output[i] = (input[i]-'a'+1)%26+'a';else if(cnt%2 == 0) //连续第偶数次出现.output[i] = (input[i]-'a'+2)%26+'a';}output[i] = '\0';cout << "input : " << input << endl;cout << "output: " << output << endl;}int main(){char*input1="abcd";char output1[20];convert(input1,output1);char*input2="abbbbcd";char output2[20];convert(input2,output2);char*input3="aaabbbcdefghijklmnopqrstuvwxyzz";char output3[50];convert(input3,output3);return 0;}

原创粉丝点击