【LeetCode & 劍指offer刷題】字串題5:58 翻轉字串(翻轉單詞與左旋轉字串)
阿新 • • 發佈:2019-01-05
【LeetCode & 劍指offer 刷題筆記】目錄(持續更新中...)
58 翻轉字串
題目一:翻轉單詞順序
牛客最近來了一個新員工Fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事Cat對Fish寫的內容頗感興趣,有一天他向Fish借來翻看,但卻讀不懂它的意思。例如,“ student. a am I”。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 “I am a student.”。Cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼? //方法一:一個字元一個字元的處理,得到單詞之後插入到結果字串前面} return str ; } 題目二:左旋轉字串 組合語言中有一種移位指令叫做迴圈左移(ROL),現在有個簡單的任務,就是用字串模擬這個指令的運算結果。對於一個給定的字元序列S,請你把其迴圈左移K位後的序列輸出。例如,字元序列S=”abcXYZdef”,要求輸出 迴圈左移3位後的結果,即“XYZdefabc”。是不是很簡單?OK,搞定它! 相關題目: 右旋陣列 class Solution { public : string LeftRotateString ( string str , int n ) { if ( n < 1 || str . empty ()) return str ; n = n % str . size (); //防止n過大 reverse ( str . begin (), str . end ()); reverse ( str . begin (), str . end () - n ); reverse ( str . end () - n , str . end ()); return str ; //迴圈左移n位可以先反轉整個序列,然後反轉倒數n個元素,再翻轉前面元素 } };