将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:
2015-08-18 19:24
453 查看
问题描述:
将输入的字符串(字符串仅包含小写字母‘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"
参考答案:
将输入的字符串(字符串仅包含小写字母‘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"
#include<iostream> using namespace std; void add(char *str,int len,char *outstr); int main() { char str[20]; gets(str); int len=strlen(str); char outstr[20]; add(str,len,outstr); cout<<outstr<<endl; system("pause"); return 0; } void add(char *str,int len,char *outstr) { int count=0,m=1; int i=0; for(i=0;i<len;i++) { if(str[i]!=str[i+1]) outstr[count++]=str[i]+1; else { outstr[count++]=str[i]+1; outstr[count++]=str[i]+2; i++;//易错,因为重进for循环的时候还会有个i++,相当于i=i+2; } } outstr[count]='\0'; int outlen=strlen(outstr); while(outlen) { if(outstr[outlen-1]>'z') outstr[outlen-1]=outstr[outlen-1]-26; outlen--; } }
参考答案:
void convert(char *input,char *output) { char c='�'; int tag=0; int len=strlen(input); for(int i=0;i { if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1 { output[i]=(input[i]-'a'+1)%26+'a'; c=input[i]; tag=1; }else { if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同 { output[i]=(input[i]-'a'+2)%26+'a'; c='�'; tag=0; }else//当前字符与前一个字符相等,且前面已有2n个字符相同。则按第一次出现算 { output[i]=(input[i]-'a'+1)%26+'a'; c=output[i]; tag=1; } } } } void convert(char *input,char *output) { char c='�'; int tag=0; int len=strlen(input); for(int i=0;i { if(input[i]!=c)//当前字符与前一个字符不相等,则该字符+1 { output[i]=(input[i]-'a'+1)%26+'a'; c=input[i]; tag=1; }else { if(tag==1)//当前字符与前一个字符相等,且前面只有一个字符相同 { output[i]=(input[i]-'a'+2)%26+'a'; c='�'; tag=0; }else//当前字符与前一个字符相等,且前面已有2n个字符相同。则按第一次出现算 { output[i]=(input[i]-'a'+1)%26+'a'; c=output[i]; tag=1; } } } }
相关文章推荐
- 自定义异常类一
- fanqiang
- python视频教程大全集下载啦!超级全的教程!
- Dream------spark--spark集群的环境搭建
- Fragment 实现tab页卡切换并保存界面状态,动态添加Fragment
- jQuery 从input中读取的内容的类型
- 【ODPS】本地数据库数据批量上传到ODPS中
- java请求https
- 使用tinyxml解析XML配置文件
- hdu4109(拓扑排序,dp)
- android客户端从服务器端获取json数据并解析的实现代码(重要)
- 给phpcms v9加入一个主题radio无线电button,它可反复使用,以创建不同的专题部分内容编辑器,添加一个主题来定义自己的领域
- leetcode---different ways to add parentheses
- [Unity]SQLite-C#调用
- TCP快速重传与快速恢复原理分析
- HUD-5399 Too Simple(数学)
- HDU 1865 六度分离 <裸的迪杰斯特拉算法>
- springMVC 配置jdbcTemplate连接Oracle数据库出错
- Bag Problem
- hadoop native本地库问题总结