您的位置:首页 > 其它

leetcode Reverse Words in a String III 反转字符串中的单词

2017-09-22 23:37 531 查看
Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

Example 1:

Input: “Let’s take LeetCode contest”

Output: “s’teL ekat edoCteeL tsetnoc”

Note: In the string, each word is separated by single space and there will not be any extra space in the string.

思路:将字符串通过空格分成各个单词,然后依次反转

class Solution {
public:
string reverseWords(string s) {
if (s.length() == 0) return s;
int begin = 0, end = 0;
while (end < s.length() - 1) {
int i = begin;
for (; i < s.length(); ++i)
if (s[i] == ' ' || i == s.length() - 1)
break;
if (i == s.length() - 1)
end = i;
else end = i - 1;
s = reverse(s, begin, end);
begin = i + 1;
}
return s;
}
string reverse(string s, int begin, int end) {
char temp;
for (int i = begin; i <= (end + begin) / 2; ++i) {
temp = s[i];
s[i] = s[end + begin - i];
s[end + begin - i] = temp;
}
return s;
}
};


下面是leetcode上看到的一个答案,代码很清晰

class Solution {
public:
string reverseWords(string s) {
for (int i = 0; i < s.length(); i++) {
if (s[i] != ' ') {
int j = i;
for (; j < s.length() && s[j] != ' '; j++) { }
reverse(s.begin() + i, s.begin() + j);
i = j - 1;
}
}

return s;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: