LeetCode in Kotlin

2042. Check if Numbers Are Ascending in a Sentence

Easy

A sentence is a list of tokens separated by a single space with no leading or trailing spaces. Every token is either a positive number consisting of digits 0-9 with no leading zeros, or a word consisting of lowercase English letters.

Given a string s representing a sentence, you need to check if all the numbers in s are strictly increasing from left to right (i.e., other than the last number, each number is strictly smaller than the number on its right in s).

Return true if so, or false otherwise.

Example 1:

example-1

Input: s = “1 box has 3 blue 4 red 6 green and 12 yellow marbles”

Output: true

Explanation: The numbers in s are: 1, 3, 4, 6, 12. They are strictly increasing from left to right: 1 < 3 < 4 < 6 < 12.

Example 2:

Input: s = “hello world 5 x 5”

Output: false

Explanation: The numbers in s are: 5, 5. They are not strictly increasing.

Example 3:

example-3

Input: s = “sunset is at 7 51 pm overnight lows will be in the low 50 and 60 s”

Output: false

Explanation: The numbers in s are: 7, 51, 50, 60. They are not strictly increasing.

Constraints:

Solution

class Solution {
    fun areNumbersAscending(s: String): Boolean {
        val words = s.split("\\ ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
        var prev = 0
        for (word in words) {
            if (Character.isDigit(word[0])) {
                prev = if (word.toInt() <= prev) {
                    return false
                } else {
                    word.toInt()
                }
            }
        }
        return true
    }
}