題目描述(60分):
通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請編寫一個字符串過濾程序,若字符串中出現多個相同的字符,將非首次出現的字符過濾掉。
比如字符串“abacacde”過濾結果爲“abcde”。
要求實現函數:
void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);
【輸入】 pInputStr: 輸入字符串
lInputLen: 輸入字符串長度
【輸出】 pOutputStr:輸出字符串,空間已經開闢好,與輸入字符串等長;
【注意】只需要完成該函數功能算法,中間不需要有任何IO的輸入輸出
示例
輸入:“deefd” 輸出:“def”
輸入:“afafafaf” 輸出:“af”
輸入:“pppppppp” 輸出:“p”
下面是我的程序,其實這個題太簡單了,由此可見大公司在招聘的時候也看的是我們的基本功:這裏沒考慮算法優劣問題了,他的上機環境是運行成功就通過
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);
int main()
{
char input_str[] = "bbbbbbbbbbbbb";
char *output_str = (char*)malloc(sizeof(char) * strlen(input_str));
memset(output_str,0,strlen(input_str));
stringFilter(input_str,strlen(input_str),output_str);
printf("%s\n",output_str);
system("pause");
return 0;
}
void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr)
{
bool mark;
int i=0;
int N=0;
while( pInputStr[i] )
{
mark = false;
for(int j=0;pOutputStr[j];++j)
{
if(pInputStr[i] == pOutputStr[j])
{
mark = true;
break;
}
}
if(mark == false)
pOutputStr[N++] = pInputStr[i];
i++;
}
}
題目描述(40分):
通過鍵盤輸入一串小寫字母(a~z)組成的字符串。請編寫一個字符串壓縮程序,將字符串中連續出席的重複字母進行壓縮,並輸出壓縮後的字符串。
壓縮規則:
1. 僅壓縮連續重複出現的字符。比如字符串"abcbc"由於無連續重複字符,壓縮後的字符串還是"abcbc".
2. 壓縮字段的格式爲"字符重複的次數+字符"。例如:字符串"xxxyyyyyyz"壓縮後就成爲"3x6yz"
要求實現函數:
void stringZip(const char *pInputStr, longlInputLen, char *pOutputStr);
【輸入】 pInputStr: 輸入字符串
lInputLen: 輸入字符串長度
【輸出】 pOutputStr:輸出字符串,空間已經開闢好,與輸入字符串等長;
【注意】只需要完成該函數功能算法,中間不需要有任何IO的輸入輸出
void stringZip(const char *pInputStr,long lInputLen,char *pOutputStr);
int main()
{
char input_str[] = "ssdsddfddgdddffgdfgffgggfggghhh";
char *output_str = (char*)malloc(sizeof(char) * strlen(input_str));
stringZip(input_str,strlen(input_str),output_str);
printf("%s\n",output_str);
system("pause");
return 0;
}
void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr)
{
int i=0,mx=0,j,N=0;
while( pInputStr[i] )
{
j=1;
for(;pInputStr[i+j] == pInputStr[i];j++);
if(j != 1)
pOutputStr[N++] = char(48 + j);
pOutputStr[N++] = pInputStr[i];
i += j;
}
pOutputStr[N] = '\0';
}
經過我的經驗觀察,華爲在每年招聘的時候字符串處理永遠是寵兒,所以面試的時候還是多熟悉下