class Solution { public boolean isAlienSorted(String[] words, String order) { if (words == null || words.length == 0 || order == null || order.length() == 0) return false; Map<Character, Integer> index = new HashMap<>(); for (int i = 0; i < order.length(); i++) { index.put(order.charAt(i), i); } for (int i = 0; i < words.length - 1; i++) { if (!inOrder(words[i], words[i + 1], index)) return false; } return true; } private boolean inOrder(String s1, String s2, Map<Character, Integer> index) { int minLen = Math.min(s1.length(), s2.length()); for (int i = 0; i < minLen; i++) { char c1 = s1.charAt(i), c2 = s2.charAt(i); if (c1 != c2) { if (index.get(c1) > index.get(c2)) { return false; } else { return true; } } } if (s1.length() > s2.length()) return false; return true; }}