華為的一道面試題

2021-06-23 00:24:57 字數 985 閱讀 7794

通過鍵盤輸入一串小寫字母(a~z)組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。

壓縮規則:

1、僅壓縮連續重複出現的字元。比如字串"abcbc"由於無連續重複字元,壓縮後的字串還是"abcbc"。

2、壓縮欄位的格式為"字元重複的次數+字元"。例如:字串"***yyyyyyz"壓縮後就成為"3x6yz"。

要求實現函式: 

void stringzip(const char *pinputstr, long linputlen, char *poutputstr);

輸入pinputstr

:  輸入字串linputlen:  輸入字串長度

輸出 poutputstr

: 輸出字串,空間已經開闢好,與輸入字串等長;

下面是我的實現,想不到什麼好的演算法,如果您有什麼比較好的演算法,請不吝惜賜教,非常感謝!

#include #include #include #include #define bufsize 200

void stringzip(const char *pinputstr, long linputlen, char *poutputstr)

else //否則將數字與字元都存入陣列

curchar = *pinputstr++;

curcount = 1;

}else //否則繼續讀入下乙個字元

}}int main()

; char str2[bufsize] = ;

fgets(str, bufsize, stdin);

stringzip(str, strlen(str), str2);

printf("%s \r\n", str2);

return 0;

}

華為的一道面試題的解答

題目 int a nsize 其中隱藏著若干 0,其餘非 0整數,寫乙個函式 int func int a,int nsize 使a 把0移至後面,非 0整數移至 陣列前面並保持有序,返回值為原資料中第乙個元素為 0的下標。盡可能不使用輔助空間且考慮效率及異常問題,注釋規範且給出設計思路 程式如下 ...

一道面試題

一道面試題 射擊運動員10發打中90環有多少種可能,請編寫程式計算出來,並列印出結果,0環和10環均有效。打中90環就是沒打中10環,所以打中90環跟打中10環的可能性是一樣的。然後開始遞迴狂打槍,一到10就記錄 if params i 10 在迴圈的控制中已經排除了大於10的可能性 i 10 pa...

一道面試題

前些時候在找工作,就在準備結束此次找工作歷程的時候,去了一家公司面試,去了之後技術經理直接帶到一台電腦旁,給了一張紙條,上面是這樣的題目 用c或c 來實現 1 建立一棵樹,該樹的深度是隨機的,每個節點的位元組點數是隨機的。2 給每個節點分配一段隨機大小的記憶體空間,給每個節點賦乙個隨機數。3 遍歷這...