您现在的位置是:首页 > 编程 > 

字符串句子排序问题

2025-07-23 01:45:59
字符串句子排序问题 一·题目概述:leetcode题目链接:1859. 将句子排序 - 力扣(LeetCode) 二·思路分析:当拿到这这道题,其实一下子就会知道此题要输出的是什么,就是按照数字字符的顺序去把单词给还原出来。而题目要求的输入为什么数字字符要安排在原单词后面呢,于是就想到了它如果是按照倒序遍历,再给它复原确实也挺好的。故下面 以例1为例子说一下我的思路:第一步:就是先得到数字字符的个

字符串句子排序问题

一·题目概述:

leetcode题目链接:1859. 将句子排序 - 力扣(LeetCode)

二·思路分析:

当拿到这这道题,其实一下子就会知道此题要输出的是什么,就是按照数字字符的顺序去把单词给还原出来。

而题目要求的输入为什么数字字符要安排在原单词后面呢,于是就想到了它如果是按照倒序遍历,再给它复原确实也挺好的。

故下面 以例1为例子说一下我的思路:

第一步:

就是先得到数字字符的个数,这个可以根据空格+1来完成,因此用count把它记录下来。

第二步:

把原字符串完全倒置过来(也就是利用算法库的reverse):

第三步:

根据数字字符范围,利用find到此处的迭代器,并利用一定范围把字符添加到临时string tmp 中(这里是倒序的)

第四步:

最后面也就是颠倒过来然后补空格,但是最后要返回的ss之后末尾会多一个空格,然后给它去掉即可。

注:可能完成代码的途中,会在迭代器遍历这里出现问题:

如没控制好范围导致的迭代器越界访问:

如果没有if 和else 而是直接it=it+1;

这样就会发生迭代器越界访问(没有if):

但是只有上面判断也可能会导致死循环(没有else):

其他就思路走没有什么特别注意的地方了。

三·解答代码:代码语言:javascript代码运行次数:0运行复制
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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1131923.html

相关标签:无
上传时间: 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