LeetCode 151 翻轉字串裡的單詞

2021-10-01 11:26:34 字數 1443 閱讀 1670

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

示例 1:

輸入: "the sky is blue"

輸出: "blue is sky the"

示例 2:

輸入: "  hello world!  "

輸出: "world! hello"

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

示例 3:

輸入: "a good   example"

輸出: "example good a"

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

說明:

無空格字元構成乙個單詞。

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

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

高階:

請選用 c 語言的使用者嘗試使用 o(1) 額外空間複雜度的原地解法。
我的思路:

首先去除首尾空格,然後去除中間空格,最後把整句話翻轉,然後逐個單詞翻轉。

**1:

class solution 

s = s.substr(begin, ending - begin+1);//這裡其實可以不用切割字串的,但是不切割的話**會變得複雜一點

//-----去除字串中多餘的空格

int restspace = 0;

int pre = 1, end = 1;

while (end < s.size())

else

}int size=s.size()-restspace;//句子實際長度等於當前句子長度減去空格的大小

//-----將字串進行反轉

reverse(s.begin(), s.end()- restspace);

for (int i = 0, j = 0; j <= size; j++)//將句子的單詞逐一翻轉,i是當前單詞的首部,j是當前單詞的尾部

}return s.substr(0,size);//切割句子

}};

**2:

class solution 

if (ans.size()>0&&ans[ans.length()-1]==' ')

return ans;

}};

**3:

LeetCode 151 翻轉字串

給定乙個字串,逐個翻轉字串中的每個單詞。示例 1 輸入 the sky is blue 輸出 blue is sky the 示例 2 輸入 hello world 輸出 world hello 解釋 輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。示例 3 輸入 a good ...

Leetcode 151 翻轉字串

給定乙個字串,逐個翻轉字串中的每個單詞。示例 1 輸入 the sky is blue 輸出 blue is sky the 示例 2 輸入 hello world 輸出 world hello 解釋 輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。示例 3 輸入 a good ...

leetcode151翻轉字串單詞

leetcode151.翻轉字串裡的單詞 題目描述 給定乙個字串,逐個翻轉字串中的每個單詞 示例 輸入 the sky is blue 輸出 blue is sky the 再這裡需要逐一的是輸入的字串可以在前面或者後面包含多餘的空格,但反轉後的單詞間的空格只能減少到乙個。思路 在這裡考慮進行兩次翻...