翻轉字串

2021-08-04 21:09:38 字數 1301 閱讀 4641

描述:給定乙個字串,逐個翻轉字串中的每個單詞。

說明 單詞的構成:無空格字母構成乙個單詞

輸入字串是否包括前導或者尾隨空格?可以包括,但是反轉後的字元不能包括

如何處理兩個單詞間的多個空格?在反轉字串中間空格減少到只含乙個

樣例:

given s = 「the sky is blue」,

return 「blue is sky the」.

思路:先反轉整個字串,然後再反轉字串。譬如先將「i am a student」反轉為「tneduts a ma i」,然後再對每個字串(空格分割)反轉一次。

新知識點:string t(s)//新建乙個字串t與已存在的s結構、引數完全一致;

p.find_first_not_of(」 「)//返回字串p第乙個不是空格的字元的序號

p.find_last_not_of(」 「)//返回字串p最後乙個不是空格的字元的序號

(1)erase(pos,n); 刪除從pos開始的n個字元,比如erase(0,1)就是刪除第乙個字元

(2)erase(position);刪除position處的乙個字元(position是個string型別的迭代器)

(3)erase(first,last);刪除從first到last之間的字元(first和last都是迭代器)

class

solution

/*翻轉每個單詞*/

for(i=0; i/*依次翻轉除最後乙個單詞之外的所有單詞*/

if(t[i] == ' ')//每次檢測到空格,表示乙個完整的單詞

/*翻轉最後乙個單詞*/

if( i == (len-1))//因為最後乙個單詞後面沒有空格,只有通過判斷計數是否到達了(長度-1),若到達了,則表示最後乙個單詞完整了

};

string reversewords(string s) 

if(i<0) break;//所有單詞翻轉結束,退出迴圈

if(ss.length()!=0)//當翻轉乙個單詞結束後,在後面加上乙個空格

ss.push_back(' ');

string temp ;//

for(;i>=0&&s[i]!=' ';i--)//將單詞暫存至temp,此時單詞是翻轉後的狀態

temp.push_back(s[i]);

reverse(temp.begin(),temp.end());//進行單詞翻轉,恢復原狀

}s=ss;

return s;

}

翻轉字串 翻轉單詞字串

將一句話裡面的單詞進行倒置,標點符號不倒換。比如一句話 i come from china.倒換後變成 china.from come i 解析 解決該問題可以分為兩步,第一步全盤置換為 anihc morf emoc i 第二部對每個單詞進行逐步翻轉,如果不是空格,則開始翻轉單詞。具體 如下 in...

字串翻轉

遞迴入門 字串翻 將字串 test 翻轉,變為 tset 解法 遞迴 此題的遞迴跟判斷回文字串的解法原理一樣。只是不是比較兩端字元,而是直接交換。include using namespace std int str turn int low,int high,char p,int length t...

字串翻轉

字串翻轉是常見筆試面試題,記錄下來 include include void reverse const char src char dest intstrlen strlen src while strlen void strrev ms char input char output int le...