華為機試 字串過濾 字串壓縮

2021-06-21 13:01:24 字數 2344 閱讀 5348

//完全原創也不是了,不過這是乙個學習的過程。

華為校園招聘的機試題目

一、題目描述:

通過鍵盤輸入一串小寫字母(a~z)組成的字串。請編寫乙個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。

比如字串「abacacde」過濾結果為「abcde」。

要求實現函式:void stringfilter(const char *pinputstr, long linputlen, char *poutputstr);

【輸入】 pinputstr:  輸入字串

linputlen:  輸入字串長度         

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

【注意】只需要完成該函式功能演算法,中間不需要有任何io的輸入輸出

示例 輸入:「deefd」        輸出:「def」

輸入:「afafafaf」     輸出:「af」

輸入:「pppppppp」     輸出:「p」

main函式已經隱藏,這裡保留給使用者的測試入口,在這裡測試你的實現函式,可以呼叫printf列印輸出

當前你可以使用其他方法測試,只要保證最終程式能正確執行即可,該函式實現可以任意修改,但是不要改變函式原型。一定要保證編譯執行不受影響。

//以下程式有借用前輩的演算法。

源程式:

#include#include#define n 100

using namespace std;

int main()

; cin>>a;

int len;

len=strlen(a);

stringfilter(a,len,b);

cout<

cout<

執行結果:

二、題目描述:

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

壓縮規則:

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

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

要求實現函式: 

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

【輸入】 pinputstr:  輸入字串

linputlen:  輸入字串長度

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

【注意】只需要完成該函式功能演算法,中間不需要有任何io的輸入輸出

示例 輸入:「cccddecc」   輸出:「3c2de2c」

輸入:「adef」     輸出:「adef」

輸入:「pppppppp」 輸出:「8p」

源程式:

#include#include#include#includeusing namespace std;

#define maxchar 256

int main(void)

; char poutputstr2[maxchar] = ;

stringzip(pinputstr2 , strlen(pinputstr2) , poutputstr2);

puts(pinputstr2);

puts(poutputstr2);

return 0;

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

if(0 != num) //num可能是兩位或三位或更多位的整數

poutputstr[k++] = pinputstr[i];

i = i + num + 1;

}poutputstr[k] = '\0';

}

執行結果:

其他:

if(0 != num)

我最初寫程式的時候,沒有考慮周全,只考慮的連續重複出現的字元的個數小於10個的情況,誤以為使用k++;語句就可以解決問題。這是錯誤的思想!

華為機試 字串壓縮(stringZip)

二 題目描述 40分 通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1.僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcbc 2.壓縮欄位的格式為 字元重複的次數 字...

華為機試 字串分離

題目描述 通過鍵盤輸入任意乙個字串序列,字串可能包含多個子串,子串以空格分割。請編寫乙個程式,自動分離出各個子串,並使用 將其分離,並且在最後也補充乙個 並將子串儲存。要求實現函式 void dividestring const char pinputstr,long iinputlen,char ...

華為機試 字串分隔

題目 連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。輸入描述 連續輸入字串 輸入2次,每個字串長度小於100 輸出描述 輸出到長度為8的新字串陣列 示例1 輸入 abc輸出 abc00000 分析 此題要求我們把字串每8個分成一組,...