重新排列句子中的单词

题目:

「句子」是一个用空格分隔单词的字符串。给你一个满足下述格式的句子 text :

  • 句子的首字母大写
  • text 中的每个单词都用单个空格分隔。

请你重新排列 text 中的单词,使所有单词按其长度的升序排列。如果两个单词的长度相同,则保留其在原句子中的相对顺序。

示例:

输入:text = "Leetcode is cool"
输出:"Is cool leetcode"
解释:句子中共有 3 个单词,长度为 8 的 "Leetcode" ,长度为 2 的 "is" 以及长度为 4 的 "cool" 。
输出需要按单词的长度升序排列,新句子中的第一个单词首字母需要大写。

解题方法:

解题思路:

  • 将字符串首字母转成小写;
  • 分割字符串,并存进vector中,pair包括两部分:分割出来的单词以及单词在原始句子中的编号;
  • 对vector进行排序,需要针对pair编写专门的排序规则,重点也是难点;
  • 合并排序后的字符串;
  • 调整新句子首字母大写。

大致思路就是这些,这种字符串题目做起来不是很难,起码是有思路的,但是坑多,写起来很不舒服。

代码和结果:

class Solution {
public:
    static bool cmp(pair a, pair b)
    {
        if(a.first.size()==b.first.size())
            return a.second> strs;
        string s="";
        int idx=0;
        text[0]=text[0]+'z'-'Z';
        for(int i=0;i='a')
            res[0]+='Z'-'z';
        return res.substr(0,res.size()-1);
    }
};

运行结果:

原题链接:https://leetcode-cn.com/problems/rearrange-words-in-a-sentence/

你可能感兴趣的:(重新排列句子中的单词)