953. Verifying an Alien Dictionary

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Solution {
public boolean isAlienSorted(String[] words, String order) {
int[] orderMap = new int[26];
for (int i = 0; i < order.length(); i++) {
orderMap[order.charAt(i) - 'a'] = i;
}

for (int i = 0; i < words.length - 1; i++) {
if (greatThan(words[i], words[i + 1], orderMap)) {
return false;
}
}

return true;
}

private boolean greatThan(String wordA, String wordB, int[] orderMap) {
for (int i = 0; i < wordA.length(); i++) {
if (i == wordB.length()) {
// wordA 更长
return true;
}
int diff = orderMap[wordA.charAt(i) - 'a'] - orderMap[wordB.charAt(i) - 'a'];
if (diff == 0) {
continue;
} else {
return diff > 0;
}
}

return false;
}
}

References

953. Verifying an Alien Dictionary
剑指 Offer II 034. 外星语言是否排序