这是华为的面试真题,感兴趣的小伙伴来赶紧来看看,我也没答案,但是我自己会写,还挺有意思的,同学们来感受下大厂面试的压迫感吧,嘿嘿
1.通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串倒序程序。
输入:“abcde” 输出:“edcba”
代码如下:
/*字符串倒序功能*/
void string_reverse_order(void)
{
char str[] = "abcdefg";
char* dest = NULL;
int len = strlen(str);
dest = (char*)malloc(len+1);
for (int i = 0; i < len; i++)
{
*(dest + i) = str[len-i-1];
}
*(dest + len) = '\0';
printf("str=%s\n",str);
printf("dest=%s\n",dest);
free(dest);
}
2.通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。比如字符串“abacacde”过滤结果为“abcde”。
输入:“deefd”输出:“def”
输入:“afafafaf”输出:“af"
输入:“pppppppp”输出:“p”
代码如下:
/*算法:过滤字符串*/
/*自己的*/
void stringFilter(const char* pInputStr, long InputLen, char* pOutputStr)
{
char temp = 0;
bool flag = true;
if (pInputStr==NULL|| InputLen<1)
{
printf("input is error!!!\n");
return;
}//deefd
for (int i = 0; i < InputLen; i++)
{
temp = *(pInputStr + i);
for (int j = 0; j < i; j++)
{
if (temp == *(pInputStr + j))
{
flag=false;
}
}
if (flag ==true)
{
*pOutputStr++ = temp;
}
flag = true;
}
*pOutputStr = '\0';
}
void run_string_filer(void)
{
char input_string[20];
char output_string[20];
scanf("%s",&input_string);
stringFilter(input_string,strlen(input_string), output_string);
printf("input=%s\n", input_string);
printf("output=%s\n",output_string);
}
3.通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中出现的重复字母进行压缩,并输出压缩后的字符串。
输入:“cccddecc” 输出:“3c2de2c”
输入:“adef” 输出:“adef”
输入:“pppppppp” 输出:“8p”
代码如下:
/*算法:字符串压缩*/
void stringZip(const char* pInputStr, long InputLen, char* pOutputStr)
{
char temp = 0;
char cnt = 0;
bool flag = true;
if (pInputStr == NULL || InputLen < 1)
{
printf("input is error!!!\n");
return;
}
for (int i = 0; i < InputLen; i++)
{
temp = *(pInputStr + i);
for (int j = 0; j < i; j++)
{
if (temp == *(pInputStr + j))
{
flag=false;
}
}
if (flag)
{
for (int j = i; j < InputLen; j++)
{
if (temp == *(pInputStr + j))
{
cnt++;
}
}
*pOutputStr++ =0x30+ cnt;
*pOutputStr++ = temp;
}
if (flag == false)
{
flag = true;
}
cnt = 0;
}
*pOutputStr = '\0';
}
void run_string_zip(void)
{
char input_string[20];
char output_string[20];
scanf("%s", &input_string);
stringZip(input_string, strlen(input_string), output_string);
printf("input=%s\n", input_string);
printf("output=%s\n", output_string);
}
喜欢的小伙伴可收藏加转发后续,本帖会持续更新的哦