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()) { 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. 外星语言是否排序