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 又是一道字符串分隔的题目相关推荐

  1. .NET如何将字符串分隔为字符

    前言 如果这是一道面试题,答案也许非常简单:.ToCharArray(),这基本正确-- 我们以"AB吉??????"作为输入参数,首先如果按照"正常"处理的思 ...

  2. LeetCode 583. 两个字符串的删除操作(动态规划)

    1. 题目 给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符. 示例: 输入: "sea" ...

  3. LeetCode 712. 两个字符串的最小ASCII删除和(DP,类似编辑距离)

    1. 题目 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea", s2 = "eat" ...

  4. 牛客网–华为机试在线训练4:字符串分隔

    牛客网–华为机试在线训练4:字符串分隔 题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输 ...

  5. Leetcode 712.两个字符串的最小ASCII删除和

    Time: 20190906 Type: Medium 题目描述 给定两个字符串s1, s2,找到使两个字符串相等所需删除字符的ASCII值的最小和. 示例 1: 输入: s1 = "sea ...

  6. LeetCode——1888. 使二进制字符串字符交替的最少反转次数(Minimum Number of Flips to Make the Binary ...)[中等]——分析及代码(Java)

    LeetCode--1888. 使二进制字符串字符交替的最少反转次数[Minimum Number of Flips to Make the Binary String Alternating][中等 ...

  7. LeetCode 712. 两个字符串的最小ASCII删除和

    LeetCode 712. 两个字符串的最小ASCII删除和 文章目录 LeetCode 712. 两个字符串的最小ASCII删除和 题目描述 一.解题关键词 二.解题报告 1.思路分析 2.时间复杂 ...

  8. 手写小程序:字符串分隔

    手写小程序:字符串分隔 题目 描述: •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输 ...

  9. 华为机考HJ4字符串分隔C语言题解

    华为机考HJ4字符串分隔C语言题解 好家伙,今天的while循环检测文件末尾又好使了. 把白给打在公屏上. 主要思路就是求余的花样使用. 首先把字符串数组里的内容全部放入新的数组. 新的数组每满八个就 ...

最新文章

  1. NBT:宏基因组二、三代混合组装软件OPERA-MS
  2. 阿里内核月报2014年4月
  3. 入选2021全球青年领袖榜单,蚂蚁何征宇的技术人生
  4. Blazor Day
  5. Go语言学习之3 流程控制、函数
  6. 遍历Map key-value的两种方法、遍历Set方法
  7. Ubuntu有了第一个全球CDN更新源
  8. RocketMQ存储篇——整体结构以及MappedFile讲解
  9. python gdal迭代写为ENVI的dat格式
  10. ArcMap中设置字体符号Character Marker Symbol指定某字的unicode
  11. 根据日期算星座 mysql,Hive 通过日期计算星座实例
  12. java的nexttoken_int nextToken()
  13. 计算圆周率可以根据公式如下:请利用Python提供的itertools模块,我们来计算这个序列的前N项和——python
  14. zabbix实现对mysql数据库的监控
  15. 【Django】 终端打印出错信息
  16. git 暂存的代码命令
  17. 团队建设管理能力分析
  18. 数论-卢卡斯定理(lucas)与拓展卢卡斯定理 (exlucas)
  19. 论表现手法与表达方式
  20. 水果店需要的设备清单有哪些,水果店都需要哪些设备

热门文章

  1. 中国互联网办公地变迁史:你的公司为什么也搬家了?
  2. HTML图像和超链接及文字颜色与排版
  3. SSH远程访问以及控制
  4. acml会议级别_2020年国际学术会议参考列表
  5. 33个非常实用的JavaScript一行代码
  6. speedoffice(PPT)怎么设置文字竖向
  7. python读取stl文件三维坐标_python vtk 读取三维raw数据存为stl
  8. 【技巧】如何修改PDF文件?
  9. [Eclips 安装] eclipse启动不了,出现“Java was...”如何解决
  10. Cameralink转VGA接口转换模块