列表

详情


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

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

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

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

 

示例 1:

example-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:

example-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 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: bool areNumbersAscending(string s) { } };

java 解法, 执行用时: 1 ms, 内存消耗: 39.4 MB, 提交时间: 2023-01-03 09:32:09

class Solution {
    public boolean areNumbersAscending(String s) {
        int pre = 0, pos = 0;
        while (pos < s.length()) {
            if (Character.isDigit(s.charAt(pos))) {
                int cur = 0;
                while (pos < s.length() && Character.isDigit(s.charAt(pos))) {
                    cur = cur * 10 + s.charAt(pos) - '0';
                    pos++;
                }
                if (cur <= pre) {
                    return false;
                }
                pre = cur;
            } else {
                pos++;
            }
        }
        return true;
    }
}

javascript 解法, 执行用时: 60 ms, 内存消耗: 41.1 MB, 提交时间: 2023-01-03 09:31:54

/**
 * @param {string} s
 * @return {boolean}
 */
var areNumbersAscending = function(s) {
    let pre = 0, pos = 0;
    while (pos < s.length) {
        if (isDigit(s[pos])) {
            let cur = 0;
            while (pos < s.length && isDigit(s[pos])) {
                cur = cur * 10 + s[pos].charCodeAt() - '0'.charCodeAt();
                pos++;
            }
            if (cur <= pre) {
                return false;
            }
            pre = cur;
        } else {
            pos++;
        }
    }
    return true;
};

const isDigit = (ch) => {
    return parseFloat(ch).toString() === "NaN" ? false : true;
}

golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-01-03 09:31:30

func areNumbersAscending(s string) bool {
    pre, i := 0, 0
    for i < len(s) {
        if unicode.IsDigit(rune(s[i])) {
            cur := 0
            for i < len(s) && unicode.IsDigit(rune(s[i])) {
                cur = cur*10 + int(s[i]-'0')
                i++
            }
            if cur <= pre {
                return false
            }
            pre = cur
        } else {
            i++
        }
    }
    return true
}

python3 解法, 执行用时: 36 ms, 内存消耗: 14.9 MB, 提交时间: 2022-05-30 11:24:32

class Solution:
    def areNumbersAscending(self, s: str) -> bool:
        ds = re.findall('\d+', s)
        n = len(ds)
        for i in range(0, n-1):
            if int(ds[i]) >= int(ds[i+1]): return False
        return True

上一题