leetcode 1859 又是一道字符串分隔的题目
1859. 将句子排序
难度简单14收藏分享切换为英文接收动态反馈
一个 句子 指的是一个序列的单词用单个空格连接起来,且开头和结尾没有任何空格。每个单词都只包含小写或大写英文字母。
我们可以给一个句子添加 从 1 开始的单词位置索引 ,并且将句子中所有单词 打乱顺序 。
- 比方说,句子
"This is a sentence"
可以被打乱顺序得到"sentence4 a3 is2 This1"
或者"is2 sentence4 This1 a3"
。
给你一个 打乱顺序 的句子 s
,它包含的单词不超过 9
个,请你重新构造并得到原本顺序的句子。
示例 1:
输入:s = "is2 sentence4 This1 a3" 输出:"This is a sentence" 解释:将 s 中的单词按照初始位置排序,得到 "This1 is2 a3 sentence4" ,然后删除数字。
示例 2:
输入:s = "Myself2 Me1 I4 and3" 输出:"Me Myself and I" 解释:将 s 中的单词按照初始位置排序,得到 "Me1 Myself2 and3 I4" ,然后删除数字。
提示:
2 <= s.length <= 200
s
只包含小写和大写英文字母、空格以及从1
到9
的数字。s
中单词数目为1
到9
个。s
中的单词由单个空格分隔。s
不包含任何前导或者后缀空格。
题解:先分隔字符串,然后找到后缀的1-9的数字,因为题目限定了只有1-9,所有可以取个巧。
class Solution {vector<string> split(const string& str, const string& delim) { vector<string> res; if("" == str) return res; //先将要切割的字符串从string类型转换为char*类型 char * strs = new char[str.length() + 1] ; //不要忘了 strcpy(strs, str.c_str()); char * d = new char[delim.length() + 1]; strcpy(d, delim.c_str()); char *p = strtok(strs, d); while(p) { string s = p; //分割得到的字符串转换为string类型 res.push_back(s); //存入结果数组 p = strtok(NULL, d); } delete[] d;delete[] strs;return res; }
public:string sortSentence(string s) {vector<string> result;result = split(s," ");string rets;char j='1';while(j-'0'<=result.size()){int i=0;while(result[i][result[i].size()-1]!=j && i<result.size()){i++;}for(int k=0;k<result[i].size()-1;k++){rets+=result[i][k];}if(j-'0'<result.size())rets+=' ';j++;}return rets;}
};
执行结果:
通过
显示详情
添加备注
执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:6.2 MB, 在所有 C++ 提交中击败了31.92%的用户
通过测试用例:45 / 45
leetcode 1859 又是一道字符串分隔的题目相关推荐
- .NET如何将字符串分隔为字符
前言 如果这是一道面试题,答案也许非常简单:.ToCharArray(),这基本正确-- 我们以"AB吉??????"作为输入参数,首先如果按照"正常"处理的思 ...
- LeetCode 583. 两个字符串的删除操作(动态规划)
1. 题目 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: "sea" ...
- LeetCode 712. 两个字符串的最小ASCII删除和(DP,类似编辑距离)
1. 题目 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" ...
- 牛客网–华为机试在线训练4:字符串分隔
牛客网–华为机试在线训练4:字符串分隔 题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输 ...
- Leetcode 712.两个字符串的最小ASCII删除和
Time: 20190906 Type: Medium 题目描述 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea ...
- LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)
LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...
- LeetCode 712. 两个字符串的最小ASCII删除和
LeetCode 712. 两个字符串的最小ASCII删除和 文章目录 LeetCode 712. 两个字符串的最小ASCII删除和 题目描述 一.解题关键词 二.解题报告 1.思路分析 2.时间复杂 ...
- 手写小程序:字符串分隔
手写小程序:字符串分隔 题目 描述: •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输 ...
- 华为机考HJ4字符串分隔C语言题解
华为机考HJ4字符串分隔C语言题解 好家伙,今天的while循环检测文件末尾又好使了. 把白给打在公屏上. 主要思路就是求余的花样使用. 首先把字符串数组里的内容全部放入新的数组. 新的数组每满八个就 ...
最新文章
- NBT:宏基因组二、三代混合组装软件OPERA-MS
- 阿里内核月报2014年4月
- 入选2021全球青年领袖榜单,蚂蚁何征宇的技术人生
- Blazor Day
- Go语言学习之3 流程控制、函数
- 遍历Map key-value的两种方法、遍历Set方法
- Ubuntu有了第一个全球CDN更新源
- RocketMQ存储篇——整体结构以及MappedFile讲解
- python gdal迭代写为ENVI的dat格式
- ArcMap中设置字体符号Character Marker Symbol指定某字的unicode
- 根据日期算星座 mysql,Hive 通过日期计算星座实例
- java的nexttoken_int nextToken()
- 计算圆周率可以根据公式如下:请利用Python提供的itertools模块,我们来计算这个序列的前N项和——python
- zabbix实现对mysql数据库的监控
- 【Django】 终端打印出错信息
- git 暂存的代码命令
- 团队建设管理能力分析
- 数论-卢卡斯定理(lucas)与拓展卢卡斯定理 (exlucas)
- 论表现手法与表达方式
- 水果店需要的设备清单有哪些,水果店都需要哪些设备
热门文章
- 中国互联网办公地变迁史:你的公司为什么也搬家了?
- HTML图像和超链接及文字颜色与排版
- SSH远程访问以及控制
- acml会议级别_2020年国际学术会议参考列表
- 33个非常实用的JavaScript一行代码
- speedoffice(PPT)怎么设置文字竖向
- python读取stl文件三维坐标_python vtk 读取三维raw数据存为stl
- 【技巧】如何修改PDF文件?
- [Eclips 安装] eclipse启动不了,出现“Java was...”如何解决
- Cameralink转VGA接口转换模块