1、編寫函數,實作把一個char組成的字元串循環右移n位。如abcdehi,n=2,則hiabcde。
示例代碼
2、輸入一行字元串,找出其中出現的相同且長度最長的字元串,輸出它及其首字元的位置。如yyabcdabjcabceg,則輸出為abc,3。
大體思路:把字元串yyabcdabjcabceg拆解:
yyabcdabjcabceg
yabcdabjcabceg
abcdabjcabceg
...
ceg
eg
g
然後對字元串進行排序,比較相鄰字元串的前驅,求最長的共公前驅。
在我們的程式中的展現,我們沒有用這種方法,因為這種方法在排序中會用很多時間。我們借用了C++的實作函數find來巧妙的實作。
注:basic_string::substr
basic_string substr(size_type pos = 0, size_type n = npos) const;
The member function returns an object whose controlled sequence is a copy of up to n elements of the controlled sequence beginning at position pos.
傳回一個從指定位置開始,并具有指定長度的子字元串。
參數
pos 必選。所需的子字元串的起始位置。字元串中第一個字元的索引為 0。
n 可選項。傳回的子字元串中包含的字元數。
備注 如果 n 為 0 或負數,将傳回一個空字元串。如果沒有指定該參數,則子字元串将延續到字元串的結尾。
在VS中測試,如是n是負數或大于主串的總長度,則輸出是pos開始到主串末尾的字元。
3、實作strstr()功能。如主串是12345678,子串是234,則傳回2345678。
4、将一句話中的單詞倒置,标點符号不倒換。如“i come from tianjin.”,倒換後變成“tianjin. from come i”。
大體思路:先把整個字元串調整,再針對每個單詞進行調整。
5、求一個字元串中連續出現次數最多的子串。
大體思路:如abcbcbcabc,則把字元串切割成:
abcbcbcabc
bcbcbcabc
cbcbcabc
bcbcabc
cbcabc
bcabc
bc
c
然後,從第一個子串開始到最後一個子串,将目前串與後面的每個子串進行字元比對,并統計。