953. Verifying an Alien Dictionary
解法一
思路
这道题想法比较直白,按给定的字符排序来判断字符串数组的元素是否按字典顺序排序。那么只要将前后字符的同个位置元素按字典比较即可。而且只需比较到较短的那个字符串长度为止。如果前一单词 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 协议》,转载必须注明作者和本文链接
推荐文章: