修改字符串 (华为入职前练习)

来源:互联网 发布:usb hub 知乎 编辑:程序博客网 时间:2024/04/30 07:18
  • 将给定字符串中连续出现3次的小写字母替换为改小写字母在字母表中的下一个字母(z变为a),大写字母和其他字符不处理,仍然保留。要求最终输出的字符串中不再存在任何连续出现3次的小写字母。

  • 例如字符串ATRcccert893#45ae经过处理后应该为ATRdert893#45ae

 

详细描述:

  • 接口说明

原型:

int ChangeString(char *pInStr,char *pOutStr)

输入参数:

char *pInStr 输入字符串

输出参数:

char *pOutStr 输出字符串,内存空间已分配好,可直接使用

返回值:

int 0:处理成功 -1:出现异常

限制:

举例:

pInStr:jkds*^*(HKEEEklIdddjilfff

   pOutStr:jkds*^*(HKEEEklIejilg

 

#include "stdafx.h"#include "iostream"#include "string"using namespace std;  int ChangeString(char *pInStr,char *pOutStr){int len=strlen(pInStr),i,j=0;char temp[999],c;bool flag=1;for (i=0;i<len;i++){if (pInStr[i]>='a' && pInStr[i]<='z' && flag){c=pInStr[i];if (c==pInStr[i+1] && c==pInStr[i+2]){flag=0;if (c=='z'){temp[j]='a';}elsetemp[j]=++c;j++;i=i+2;}else{temp[j]=pInStr[i];j++;}}else{temp[j]=pInStr[i];j++;}}temp[j]='\0';if (flag==1){int k=0,lenth=strlen(temp);for(k=0;k<=lenth;k++){pOutStr[k]=temp[k];}return 0;}ChangeString(temp,pOutStr);}int main(){char input[18]="fffgggATRer5#45ae",output[18]="\0";int k=ChangeString(input,output);cout<<"k="<<k<<endl<<output<<endl;return 0;}


0 0
原创粉丝点击