您的位置:首页 > 其它

557. Reverse Words in a String III

2017-05-06 10:50 495 查看
听cgl的话,先从简单的刷起。

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"

注意最后一个单词与其他单词不一样,没有空格。

解法一:

class Solution {
public:
string reverseWords(string s) {
string tmp;
string ret;
for (int i = -1; i+1<s.size();) {
for (int j = 0;; j++) {
if (i == s.size()-1)
break;
if (s[++i] == ' ')
break;
tmp.insert(j,1,s[i]);
}
if(s[i] != ' ')
for (int j = tmp.size() - 1; j >= 0; j--)
ret.insert(i - j, 1, tmp[j]);
else{
for (int j = tmp.size() - 1; j >= 0; j--)
ret.insert(i - 1 - j, 1, tmp[j]);
ret.insert(i, 1, ' ');
}
tmp.clear();
}
return ret;
}
};
解法二:s的最后添加空格,无特殊情况,最后把ret中的最后一个空格删除
class Solution {
public:
string reverseWords(string s) {
s.insert(s.size(), 1, ' ');
string tmp;
string ret;
for (int i = 0; i <s.size();) {
for (int j = 0;; j++) {
if (s[i++] == ' ')
break;
tmp.insert(j, 1, s[i - 1]);
}
for (int j = tmp.size() - 1; j >= 0; j--)
ret.insert(i - 2 - j, 1, tmp[j]);
ret.insert(i-1, 1, ' ');
tmp.clear();
}
ret.erase(ret.size() - 1);
return ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: