验证外星语词典
难度:简单
遍历,每次判断相邻的字符串是否符合规则即可。
代码如下:
public class VerifyingAnAlienDictionary {
int[] ord;
public boolean isAlienSorted(String[] words, String order) {
int len = order.length();
ord = new int[len-1];
for (int i = 0; i < len; i++) {
ord[order.charAt(i)-'a'] = i ;
}
for (int i = 1; i < words.length; i++) {
if (check(words[i],words[i-1])){
return false;
}
}
return true;
}
//判断第一个单词是否在第二个单词前面
public boolean check(String a,String b){
int i = a.length();
int j = b.length();
while ( i > 0 && j > 0){
int dif = ord[a.charAt(i)] - ord[b.charAt(j)];
if (dif>0){
return true;
}else if (dif<0){
return false;
}
}
if (i>0){
return true;
}
if (j>0){
return false;
}
//代码必然不会运行到这里,这么写只是为了编译通过
return false;
}
执行结果:成功