953. Verifying an Alien Dictionary

Borris發表於2019-10-04

解法一

思路

這道題想法比較直白,按給定的字元排序來判斷字串陣列的元素是否按字典順序排序。那麼只要將前後字元的同個位置元素按字典比較即可。而且只需比較到較短的那個字串長度為止。如果前一單詞 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 協議》,轉載必須註明作者和本文連結

相關文章