class Solution {
public:
bool areNumbersAscending(string s) {
}
};
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
不含前导或尾随空格原站题解
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