字串转换
问题描述:
问题描述:
将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;
若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:aa 转换为 bc,zz 转换为 ab;
当连续相同字母超过两个时,第三个出现的字母按第一次出现算。
要求实现函数:void convert(char *input,char* output);
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void convert(char* input,char* output)
{
if(input==NULL)
return;
char tmp=input[0];
int k=0;
int count=1;
int len=strlen(input);
for(int i=0;i<len;i++){
if(input[i]>'z'||input[i]<'a')
return;
}
for(i=1;i<len;i++){
while(input[i]==tmp){
count++;
i++;
}
for(int j=0;j<count;j++){
if(j==1){
if(tmp=='z')
output[k++]=tmp-24;
else
output[k++]=tmp+2;
}
else{
if(tmp=='z')
output[k++]=tmp-25;
else
output[k++]=tmp+1;
}
}
output[k]='\0';
tmp=input[i];
count=1;
}
printf("the converted string is : %s\n",output);
}
int main()
{
char* instr="aaaabbzzz";
int len=strlen(instr);
char* outstr=(char *)malloc(len+1);
convert(instr,outstr);
free(outstr);
outstr=NULL;
return 0;
}