题目In an alien language, surprisingly they also use english lowercase letters, but possibly in a different order. The order of the alphabet is some permutation of lowercase letters.Given a sequence of words written in the alien language, and the order of the alphabet, return true if and only if the given words are sorted lexicographicaly in this alien language.Example 1:Input: words = [“hello”,“leetcode”], order = “hlabcdefgijkmnopqrstuvwxyz"Output: trueExplanation: As ‘h’ comes before ’l’ in this language, then the sequence is sorted.Example 2:Input: words = [“word”,“world”,“row”], order = “worldabcefghijkmnpqstuvxyz"Output: falseExplanation: As ’d’ comes after ’l’ in this language, then words[0] > words[1], hence the sequence is unsorted.Example 3:Input: words = [“apple”,“app”], order = “abcdefghijklmnopqrstuvwxyz"Output: falseExplanation: The first three characters “app” match, and the second string is shorter (in size.) According to lexicographical rules “apple” > “app”, because ’l’ > ‘∅’, where ‘∅’ is defined as the blank character which is less than any other character (More info).Note:1 <= words.length <= 1001 <= words[i].length <= 20order.length == 26All characters in words[i] and order are english lowercase letters.题目地址讲解这道题讲道理,我觉得有点难。可能递归的解法比较简单吧。刚开始我思路一直是错的,正确的思路应该是先深入比较两个字符串,没有问题再比较下一对字符串(这是一种深度优先,我刚开始一直是广度优先的思路)。主要的麻烦来自于对数组越界的判断。java代码class Solution { public boolean isAlienSorted(String[] words, String order) { if(words.length==1){ return true; } Map<Character, Integer> map = new HashMap<>(); for(int i=0;i<order.length();i++){ map.put(order.charAt(i), i); } for(int i=1;i<words.length;i++){ int index = 0; boolean indexOut = false; if(index>words[i-1].length()-1){ continue; } if(index>words[i].length()-1){ return false; } while(map.get(words[i].charAt(index))==map.get(words[i-1].charAt(index))){ index++; System.out.println(index); if(index>words[i-1].length()-1){ indexOut=true; break; } if(index>words[i].length()-1){ return false; } } if(indexOut){ continue; } if(map.get(words[i].charAt(index))<map.get(words[i-1].charAt(index))){ return false; } } return true; }}