华为2013校园招聘上机笔试题--字串转换

来源:互联网 发布:有益网络怎么样 编辑:程序博客网 时间:2024/05/01 09:31
问题描述:
  将输入的字符串(字符串仅包含小写字母‘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"

void convert(char *input, char *output){if (NULL == input || NULL == output){return;}char *temp = output;/* 首先转换过去 */while (*input){if (*input == 'z'){*temp = 'a';}else{*temp = *input + 1;}temp++;input++;}*temp = '\0';int length = strlen(output);/* 检查是否有字符连续出现3次,如果有,把中间那个修改过来 */if (length >= 3){for (int i = 1; i <= length - 2; i++){if (output[i] == output[i + 1] && output[i] == output[i - 1]){output[i] = output[i + 1] + 1;}}}}

0 0
原创粉丝点击