Skip to content

Commit 829c711

Browse files
solves check if numbers are in ascending order in a sentence
1 parent 9215436 commit 829c711

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@
486486
| 2027 | [Minimum Moves to Convert String](https://leetcode.com/problems/minimum-moves-to-convert-string) | [![Java](assets/java.png)](src/MinimumMovesToConvertString.java) | |
487487
| 2032 | [Two Out of Three](https://leetcode.com/problems/two-out-of-three) | [![Java](assets/java.png)](src/TwoOutOfThree.java) | |
488488
| 2037 | [Minimum Number of Moves to Seat Everyone](https://leetcode.com/problems/minimum-number-of-moves-to-seat-everyone) | [![Java](assets/java.png)](src/MinimumNumberOfMovesToSeatEveryone.java) | |
489-
| 2042 | [Check if Numbers Are Ascending in a Sentence](https://leetcode.com/problems/check-if-numbers-are-ascending-in-a-sentence) | | |
489+
| 2042 | [Check if Numbers Are Ascending in a Sentence](https://leetcode.com/problems/check-if-numbers-are-ascending-in-a-sentence) | [![Java](assets/java.png)](src/CheckIfNumbersAreAscendingInASentence.java) | |
490490
| 2047 | [Number of Valid Words in a Sentence](https://leetcode.com/problems/number-of-valid-words-in-a-sentence) | | |
491491
| 2053 | [Kth Distinct String in an Array](https://leetcode.com/problems/kth-distinct-string-in-an-array) | | |
492492
| 2057 | [Smallest Index With Equal Value](https://leetcode.com/problems/smallest-index-with-equal-value) | | |
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// https://leetcode.com/problems/check-if-numbers-are-ascending-in-a-sentence
2+
// T: O(|s|)
3+
// S: O(|s|)
4+
5+
import java.util.LinkedList;
6+
import java.util.Queue;
7+
8+
public class CheckIfNumbersAreAscendingInASentence {
9+
public boolean areNumbersAscending(String s) {
10+
StringBuilder word = new StringBuilder();
11+
final Queue<String> numbers = new LinkedList<>();
12+
for (int i = 0 ; i < s.length() ; i++) {
13+
if (s.charAt(i) == ' ') {
14+
if (isNumber(word)) {
15+
if (!numbers.isEmpty() && lessThanEqual(word.toString(), numbers.peek())) {
16+
return false;
17+
}
18+
numbers.poll();
19+
numbers.add(word.toString());
20+
}
21+
word = new StringBuilder();
22+
} else word.append(s.charAt(i));
23+
}
24+
return !isNumber(word) || numbers.isEmpty() || !lessThanEqual(word.toString(), numbers.peek());
25+
}
26+
27+
private boolean isNumber(StringBuilder s) {
28+
return Character.isDigit(s.charAt(0));
29+
}
30+
31+
private boolean lessThanEqual(String s, String o) {
32+
if (s.length() < o.length()) return true;
33+
if (s.length() > o.length()) return false;
34+
for (int i = 0 ; i < s.length() ; i++) {
35+
if (s.charAt(i) < o.charAt(i)) return true;
36+
if (s.charAt(i) > o.charAt(i)) return false;
37+
}
38+
return true;
39+
}
40+
}

0 commit comments

Comments
 (0)