力扣151. 反转字符串中的单词
2024-01-07 17:45:50
双指针
- 常规思路:
- 按照空格split 字符串,得到字符串单词数组;
- 然后每个单词进行反转(reverse);
- 然后使用空格将反转后的单词拼接(join)起来;
- C++ 可以在字符串上直接操作:
- 先反转字符串;
- 然后遍历字符串对字符进行操作:
- 找到单词(非空字符)作为起始 start 指针,找到单词结尾 end 指针;
- start 到 end 即为单词的区间,对其进行反转操作还原单词;
- 加上空格字符连接;
- 最后去除字符串尾部多余的字符,最开始使用 index 指针标记有效字符的位置;
class Solution {
public:
string reverseWords(string s) {
std::reverse(s.begin(), s.end());
int size = s.size();
int idx = 0;
for (int start = 0; start < size; ++start) {
if (s[start] != ' ') {
if (idx != 0) {
s[idx++] = ' ';
}
int end = start;
while (end < size && s[end] != ' ') {
s[idx++] = s[end++];
}
std::reverse(s.begin() + idx - (end - start), s.begin() + idx);
start = end;
}
}
s.erase(s.begin() + idx, s.end());
return s;
}
};
文章来源:https://blog.csdn.net/N_BenBird/article/details/135430373
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!