华为机试——字符串转换:
将输入的字符串(字符串仅包含小写字母’a’到’z’),按照如下规则,循环转换后输出:a->b,b->c,….y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母连续转换2次。例如:aa转换成bc,zz转换为ab;当连续相同字母超过两个时,第三个出现的字母按第一次出现.
#include<iostream>
#include<string>
using namespace std;
void convert(string input,string &output)
{
int i=0,len=input.size();
int flag=0;
while(i<len)
{
if(i!=0 && input[i]==input[i-1] && !flag)
{
output.push_back((input[i]-'a'+2)%26+'a');
flag=1;
}
else
{
output.push_back((input[i]-'a'+1)%26 + 'a');
flag=0;
}
i++;
}
}
int main()
{
string str1,str2;
getline(cin,str1);
convert(str1,str2);
cout<<str2;
}