Leetcode 2042. 检查句子中的数字是否递增
Published on 2022-06-07 17:00 in 分类: C/C++ with 萧海~
分类: C/C++

Leetcode 2042. 检查句子中的数字是否递增

    在这里插入图片描述
    句子是由若干 token 组成的一个列表,token 间用 单个 空格分隔,句子没有前导或尾随空格。每个 token 要么是一个由数字 0-9 组成的不含前导零的 正整数 ,要么是一个由小写英文字母组成的 单词 。

    • 示例,"a puppy has 2 eyes 4 legs" 是一个由 7 个 token 组成的句子:"2" 和 "4" 是数字,其他像
      "puppy" 这样的 tokens 属于单词。

    给你一个表示句子的字符串 s ,你需要检查 s 中的 全部 数字是否从左到右严格递增(即,除了最后一个数字,s 中的 每个 数字都严格小于它 右侧 的数字)。

    如果满足题目要求,返回 true ,否则,返回 false 。

    示例 1:

    在这里插入图片描述

    输入:s = "1 box has 3 blue 4 red 6 green and 12 yellow marbles"
    输出:true
    解释:句子中的数字是:1, 3, 4, 6, 12
    这些数字是按从左到右严格递增的 1 < 3 < 4 < 6 < 12

    示例 2:

    输入:s = "hello world 5 x 5"
    输出:false
    解释:句子中的数字是:5, 5 。这些数字不是严格递增的。

    示例 3:

    在这里插入图片描述

    输入:s = "sunset is at 7 51 pm overnight lows will be in the low 50 and 60 s"
    输出:false
    解释:s 中的数字是:7, 51, 50, 60 。这些数字不是严格递增的。

    示例 4:

    输入:s = "4 5 11 26"
    输出:true
    解释:s 中的数字是:4, 5, 11, 26
    这些数字是按从左到右严格递增的:4 < 5 < 11 < 26

    提示:

    • 3 <= s.length <= 200
    • s 由小写英文字母、空格和数字 0 到 9 组成(包含 0 和 9)
    • s 中数字 token 的数目在 2 和 100 之间(包含 2 和 100)
    • s 中的 token 之间由单个空格分隔
    • s 中至少有 两个 数字
    • s 中的每个数字都是一个 小于 100 的 正 数,且不含前导零
    • s 不含前导或尾随空格

    主要思路:字符串分割
    Code:

    class Solution {
    public:
    void str_split(const std::string & src, const std::string & sep, std::vector<string> & vec_str)
    {
    std::string::size_type start = 0;
    int i=0;
    for(std::string::size_type end = src.find(sep, start); end != std::string::npos; end = src.find(sep, start))
    {
    if(end > start)
    {
    string str=src.substr(start, end - start);
    vec_str.push_back(str);
    }
    start = end + sep.length();
    }
    if(start < src.length())
    {
    string str=src.substr(start, src.length() - start);
    vec_str.push_back(str);
    }
    }
    bool isCrease(vector<int>&vec)
    {
    for(int i=1;i<vec.size();i++)
    {
    if(vec[i]<=vec[i-1])
    return false;
    }
    return true;
    }
    bool areNumbersAscending(string s) {
    vector<string> vec;
    str_split(s," ",vec);
    vector<int>nums;
    for(int i=0;i<vec.size();i++)
    {
    if(vec[i][0]>='0'&&vec[i][0]<='9')
    {
    nums.push_back(atoi(vec[i].c_str()));
    }
    }
    if(isCrease(nums))
    return true;
    return false;
    }
    };
    posted @   萧海~  阅读(35)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · winform 绘制太阳,地球,月球 运作规律
    · AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
    · 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
    · 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
    · 上周热点回顾(3.3-3.9)
    点击右上角即可分享
    微信分享提示
    电磁波切换