劍指 Offer 58 翻轉單詞順序 左旋轉字串

2021-10-18 10:36:58 字數 1994 閱讀 9763

輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字串"i am a student. 「,則輸出"student. a am i」。

輸入: "the sky is blue"

輸出: "blue is sky the"

輸入: " hello world! "

輸出: "world! hello"

解釋: 輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。

輸入: "a good example"

輸出: "example good a"

解釋: 如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含乙個。

從前往後遍歷,每次遍歷先去除空格,然後儲存中間的字元,逆轉之後儲存到結果中。

效果不是很好。。應該是逆轉花太多時間了,~~稍微改進一下。~~改進之後發現更差了。。

不應該再開乙個stringbuilder了,直接用substring,維護乙個單詞開始和結束的位置。

效果稍微好一點

看了下題解,方法和我的差不多。。

字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如,輸入字串"abcdefg"和數字2,該函式將返回左旋轉兩位得到的結果"cdefgab"。

輸入: s = "abcdefg", k = 2

輸出: "cdefgab"

輸入: s = "lrloseumgh", k = 6

輸出: "umghlrlose"

最簡單的方法應該就是轉為乙個字元陣列,再用三次reverse方法就ok了。和leetcode的某一題是一樣的。

效果一般

獲取字串 s[n:] 切片和 s[:n] 切片,使用 「+」 運算子拼接並返回即可。

class

solution

}

class

solution

}

劍指 Offer 58 I 翻轉單詞順序

題目 leetcode上面這道題與書上有些許不同,leetcode還考慮句子首尾和末尾有空格的情況,以及單詞之間存在多個空格。思路1 class solution return res.tostring trim 思路2 先剔除字串首尾的空格,然後利用split 函式,根據空格劃分,返回乙個stri...

劍指 Offer 58 I 翻轉單詞順序

輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字串 i am a student.則輸出 student.a am i 示例 1 輸入 the sky is blue 輸出 blue is sky the 示例 2 輸入 hello ...

劍指 Offer 58 I 翻轉單詞順序

輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字串 i am a student.則輸出 student.a am i 示例 1 輸入 the sky is blue 輸出 blue is sky the 示例 2 輸入 hello ...