劍指Offer 擴充套件 字元移位(騰訊)

2021-07-22 04:32:59 字數 1388 閱讀 9141

小q最近遇到了乙個難題:把乙個字串的大寫字母放到字串的後面,各個字元的相對位置不變,且不能申請額外的空間。你能幫幫小q嗎?

輸入描述:輸入資料有多組,每組包含乙個字串s,且保證:1<=s.length<=1000.

輸出描述:對於每組資料,出移位輸後的字串。

輸入例子:aklebiceild

輸出例子:kleieilabcd

使用stl庫中的stable_partation函式:

#include#include#includeusing namespace std;

bool islower(char ch)

int main()

cout << __date__ << " " << __time__ << endl;

system("pause");

return 0;

}

執行結果:

請輸入字串:aabbccddefgjj

abcdfjabcdegj

^zaug 28 2016 13:47:40

請按任意鍵繼續. . .

分析:從頭到尾掃瞄字串,如果遇到乙個大寫字母,則將該大寫字母之後的所有字元向前移動一格,將該大寫字母移動到字串的最後邊,直接掃瞄結束!

#define _crt_secure_no_warnings

#include#include#includevoid function(char *arr, int len)

arr[len - 1] = ch;//將大寫字母賦予最後一位

--my_len;

} else

i++;

} printf("%s\n", arr);

}int main()

printf("%s %s\n", __date__, __time__);

system("pause");

return 0;

}

注意:一定要使用cin或者scanf("%s", arr)來讀取字串,否則,容易造成錯誤!

用cpp語言,思想和方法二的一致,只不過表達方式有些不一樣!

#include#includeusing namespace std;

bool iscap(char c)

void mswap(char &a, char &b)

}int main()

{ string s;

while (cin >> s)

{ int len = s.size();

int end = len;

for (int i = 0; i

劍指Offer 擴充套件 交換星號

乙個字串只包含 和數字,請把它的 號都放在開頭,且數字順序不能交換!三次迴圈陣列,第一次將陣列中的 號賦給臨時陣列,第二次將陣列中的數字賦給臨時陣列,第三次將臨時陣列中的元素賦給原陣列!include include includevoid function char arr,int len for...

替換字元 《劍指offer》

題目描述 給定乙個字元陣列,將其中的某一字元替換為其他幾個字元 如we are tf將空格替換為 20,結果為we 20are 20tf 字元陣列後有足夠位置 分析 如果從前往後替換則一些字元會多次移動浪費時間,如果能一次將其放入位置一定會減少資源利用的 思路 遍歷一遍算出每個字元要移動到的位置,以...

劍指Offer 擴充套件 刪a複製b

刪除乙個字串中所有的a,並且賦值所有的b,字串足夠大!關鍵是倒著複製字串陣列!刪除乙個字串所有的a,並且複製所有的b。注 陣列足夠大!include includevoid function char str 倒著複製 int newlength numb n str newlength 0 for...