華為校園招聘上機筆試題和面試題答案(一)

思而思學(xué)網(wǎng)

上機時間兩小時,3道題

1 字串轉(zhuǎn)換

問題描述:

將輸入的字符串(字符串僅包含小寫字母‘a’到‘z’),按照如下規(guī)則,循環(huán)轉(zhuǎn)換后輸出:a->b,b->c,…,y->z,z->a;若輸入的字符串連續(xù)出現(xiàn)兩個字母相同時,后一個字母需要連續(xù)轉(zhuǎn)換2次。例如:aa 轉(zhuǎn)換為 bc,zz 轉(zhuǎn)換為 ab;當連續(xù)相同字母超過兩個時,第三個出現(xiàn)的字母按第一次出現(xiàn)算。

要求實現(xiàn)函數(shù):

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個字符相同。則按第一次出現(xiàn)算

{

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個字符相同。則按第一次出現(xiàn)算

{

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

c=output[i];

tag=1;

}

}

}

}

熱門推薦

最新文章