解法一
思路
這道題想法比較直白,按給定的字元排序來判斷字串陣列的元素是否按字典順序排序。那麼只要將前後字元的同個位置元素按字典比較即可。而且只需比較到較短的那個字串長度為止。如果前一單詞 i 位置字元小於後一單詞 i 位置字元,那麼直接比較下一組單詞。 如果大於,就返回false; 如果相等,則繼續比較下一個位置。還有一種情況是,前n個位置的字元都相等,那麼較長的字元應該排在後面。比如"apple"應該排在"app"後面。
class Solution {
public boolean isAlienSorted(String[] words, String order) {
HashMap<Character, Integer> map = new HashMap<>();
for (int i = 0; i < order.length(); i++) {
map.put(order.charAt(i), i);
}
loop:
for (int i = 0; i < words.length - 1; i++) {
String word1 = words[i];
String word2 = words[i+1];
int len = Math.min(word1.length(), word2.length());
if (word1.substring(0,len).equals(word2.substring(0,len))) {
if (word1.length() > word2.length()) {
return false;
}
else {
continue loop;
}
}
else
{
for (int j = 0; j < len; j++) {
int order1 = map.get(word1.charAt(j));
int order2 = map.get(word2.charAt(j));
if (order1 > order2) {
return false;
}
else if (order1 < order2) {
continue loop;
}
}
}
}
return true;
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結