原題鏈接:
https://leetcode.cn/problems/check-if-numbers-are-ascending-in-a-sentence/
解題思路:
- 逐個搜索
s
,如果遇到數(shù)字笆豁,則將其逐個提取郎汪,并存儲到變量curr
中 - 將
curr
與上一個數(shù)字prev
對比,如果prev >= curr
闯狱,表示數(shù)字非遞增煞赢,返回false
- 如果沒有順利退出循環(huán),表示數(shù)字為遞增哄孤,返回
true
/**
* @param {string} s
* @return {boolean}
*/
var areNumbersAscending = function(s) {
let prev = 0 // 存儲上一個搜索到數(shù)字
let curr = 0 // 存儲當前搜索到的數(shù)字
// 逐個查找字符
for (let i = 0; i < s.length;) {
// 如果當前字符是數(shù)字照筑,提取數(shù)字并與前一個數(shù)字對比
if (/\d/.test(s[i])) {
// 逐個提取是數(shù)字的字符,并將其轉(zhuǎn)換為數(shù)字
while (/\d/.test(s[i])) {
curr = curr * 10 + Number(s[i++])
}
// 提取出數(shù)字后,與上一個數(shù)字對比凝危,如果非遞增波俄,就返回錯誤
if (prev >= curr) {
return false
}
// 將當前字符作為上一個字符,供下次對比用
prev = curr
// 將當前字符設(shè)置為0蛾默,用于提取下一個數(shù)字
curr = 0
} else {
// 如果當前字符不是數(shù)字懦铺,繼續(xù)向后查找
i++
}
}
// 如果沒有找到遞減
return true
};