当前位置:高考升学网 > 招聘笔试题 > 正文

华为校园招聘上机笔试题和面试题答案

更新:2023-09-19 09:41:20 高考升学网

  上机时间两小时,3道题

  1 字串转换

  问题描述:

  将输入的字符串(字符串仅包含小写字母‘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 ,输出的字符串

  【返回】 无

  示例

  输入:charinput="abcd"

  输出:charoutput="bcde"

  输入:charinput="abbbcd"

  输出:charoutput="bcdcde"

  void convert(char input,char output)

  {

  char c='\0';

  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='\0';

  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='\0';

  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='\0';

  tag=0;

  }else//当前字符与前一个字符相等,且前面已有2n个字符相同。则按第一次出现算

  {

  output[i]=(input[i]-'a'+1)%26+'a';

  c=output[i];

  tag=1;

  }

  }

  }

  }

最新图文

2020年河北新闻网两学一做

时间:2023-09-18 07:0:24

2020年河北新闻网两学一做

时间:2023-09-15 11:0:59

两学一做学习教育知

时间:2023-09-21 06:0:30

2020年开展两学一做学习教

时间:2023-09-19 21:0:30