Leetcode刷题笔记题解(C++):LCR 181. 字符串中的单词反转
2023-12-13 13:14:00
思路:根据栈的原理先进后出,使用栈来依次保存每个单词,然后再依次从栈中取出每个单词
class Solution {
public:
string reverseMessage(string message) {
int left = 0;
int right = message.size()-1;
//消除字符串前后多余的空格,比如字符串“ hello world! ”
while(left<=right&&message[left]==' ') left++;
while(right>=left&&message[right]==' ') right--;
stack<string>sk;
string str;//用于保存单个字符
//从第一个单词开始压入栈中
while(left<=right){
//遇到空格并且前一个字符不是空格则判定之前的就为单个单词,str.size()>0用于判定之前的一个字符不为空格
if(message[left]==' '&&str.size()>0){
sk.push(str);
str.clear();
}
//生成单词
else if(message[left]!=' ') str+=message[left];
left++;
}
//最后一个单词遇不到空格了,单独压入栈中
sk.push(str);
string ret;
while(!sk.empty()){
ret+=sk.top();//从上至下取出栈中每个单词
ret+=" ";//每个单词之后添加空格
sk.pop();//弹栈
}
ret.pop_back();//最后一个单词之后跟了一个空格,弹出空格
return ret;
}
};
文章来源:https://blog.csdn.net/qq_27524749/article/details/134902384
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!