字符串句子排序问题
字符串句子排序问题
一·题目概述:leetcode题目链接:1859. 将句子排序 - 力扣(LeetCode) 二·思路分析:当拿到这这道题,其实一下子就会知道此题要输出的是什么,就是按照数字字符的顺序去把单词给还原出来。而题目要求的输入为什么数字字符要安排在原单词后面呢,于是就想到了它如果是按照倒序遍历,再给它复原确实也挺好的。故下面 以例1为例子说一下我的思路:第一步:就是先得到数字字符的个
字符串句子排序问题
leetcode题目链接:1859. 将句子排序 - 力扣(LeetCode)
当拿到这这道题,其实一下子就会知道此题要输出的是什么,就是按照数字字符的顺序去把单词给还原出来。
而题目要求的输入为什么数字字符要安排在原单词后面呢,于是就想到了它如果是按照倒序遍历,再给它复原确实也挺好的。
故下面 以例1为例子说一下我的思路:
就是先得到数字字符的个数,这个可以根据空格+1来完成,因此用count把它记录下来。
把原字符串完全倒置过来(也就是利用算法库的reverse):
根据数字字符范围,利用find到此处的迭代器,并利用一定范围把字符添加到临时string tmp 中(这里是倒序的)
最后面也就是颠倒过来然后补空格,但是最后要返回的ss之后末尾会多一个空格,然后给它去掉即可。
注:可能完成代码的途中,会在迭代器遍历这里出现问题:
如没控制好范围导致的迭代器越界访问:
如果没有if 和else 而是直接it=it+1;
这样就会发生迭代器越界访问(没有if):
但是只有上面判断也可能会导致死循环(没有else):
其他就思路走没有什么特别注意的地方了。
class Solution {
public:
string sortSentence(string s) {
int count = 1;
string ss;
string tmp;
for (int i = 0; i < s.size(); i++) {
if (isspace(s[i])) {
count++;//到数字个数
}
}
reverse(s.begin(), ());
for (int j = 1; j <= count; j++) {
string::iterator t_it = find(s.begin(), (), j+'0');
string::iterator it = t_it+1;//确定对应单词开头位置
while (!isspace(*it) && !isdigit(*it) && (*it) != '\0') {//判断终止条件
tmp += *it;
if (it != () - 1) it = it + 1;//防止迭代器循环或者越界访问,(当遍历到最后的时候)
else break;
}
//完成到ss中添加:
reverse(tmp.begin(), ());
tmp += ' ';
ss += tmp;
();
}
ss.pop_back();//去掉最后一个空格
return ss;
}
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-08-2,如有侵权请联系 cloudcommunity@tencent 删除算法字符串string遍历排序 #感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-18 19:44:23
推荐阅读
留言与评论(共有 19 条评论) |
本站网友 中国10大超级豪宅 | 23分钟前 发表 |
就是按照数字字符的顺序去把单词给还原出来 | |
本站网友 如何提高睡眠质量 | 3分钟前 发表 |
本站网友 醋泡花生的做法 | 1分钟前 发表 |
本站网友 南昌膜结构 | 8分钟前 发表 |
因此用count把它记录下来 | |
本站网友 关闭业务 | 16分钟前 发表 |
会在迭代器遍历这里出现问题:如没控制好范围导致的迭代器越界访问:如果没有if 和else 而是直接it=it+1;这样就会发生迭代器越界访问(没有if):但是只有上面判断也可能会导致死循环(没有else):其他就思路走没有什么特别注意的地方了 | |
本站网友 性心理变态 | 21分钟前 发表 |
会在迭代器遍历这里出现问题:如没控制好范围导致的迭代器越界访问:如果没有if 和else 而是直接it=it+1;这样就会发生迭代器越界访问(没有if):但是只有上面判断也可能会导致死循环(没有else):其他就思路走没有什么特别注意的地方了 | |
本站网友 布吉二手房网 | 7分钟前 发表 |
j+'0'); string | |
本站网友 censor | 6分钟前 发表 |
() | |
本站网友 育才公寓 | 1分钟前 发表 |
就是按照数字字符的顺序去把单词给还原出来 | |
本站网友 铁岭房产网 | 24分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看算法字符串string遍历排序 | |
本站网友 营业税实施细则 | 19分钟前 发表 |
而题目要求的输入为什么数字字符要安排在原单词后面呢 | |
本站网友 传奇私服开机 | 18分钟前 发表 |
其实一下子就会知道此题要输出的是什么 | |
本站网友 人体结构组织图 | 3分钟前 发表 |
于是就想到了它如果是按照倒序遍历 | |
本站网友 长春美食 | 17分钟前 发表 |
string sortSentence(string s) { int count = 1; string ss; string tmp; for (int i = 0; i < s.size(); i++) { if (isspace(s[i])) { count++;//到数字个数 } } reverse(s.begin() | |
本站网友 人际交往障碍 | 2分钟前 发表 |
如有侵权请联系 cloudcommunity@tencent 删除前往查看算法字符串string遍历排序 | |
本站网友 中国四大汽车集团 | 30分钟前 发表 |
j+'0'); string | |
本站网友 刘本之 | 16分钟前 发表 |
就是按照数字字符的顺序去把单词给还原出来 | |
本站网友 四君子汤加减 | 0秒前 发表 |
三·解答代码:代码语言:javascript代码运行次数:0运行复制class Solution { public |