某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。
给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。
- 遍历words,握手法则两两比较,找到一个不满足条件的直接返回结果
- 两字符串使用归并思想,
if (index1 < index2) {这个需要注意下,这里需要进一步判断 第二次for循环的,假如有的话
方法一:自己写的 感觉还阔以
var isAlienSorted = function (words, order) {
for (var i = 0; i < words.length - 1; i++) {
var s1 = words[i];
var s2 = words[i + 1];
while (s1.length || s2.length) {
if (s1.length && s2.length) {
var index1 = order.indexOf(s1.slice(0, 1));
var index2 = order.indexOf(s2.slice(0, 1));
if (index1 < index2) {
break
} else if (index1 > index2) {
return false;
} else {
s1 = s1.slice(1);
s2 = s2.slice(1);
}
} else if (s1.length) {
return false
} else {
return true;
}
}
}
return true
};
别人提供的比较挫的方法,把字典给全翻译出来了
var isAlienSorted = function (words, order) {
const dict = {};
for (let i = 0; i < order.length; i++) dict[order[i]] = i;
words = words.map((word) => {
return word.split("").reduce((res, w) => {
return res + String.fromCharCode(97 + dict[w]);
}, "");
});
for (let i = 1; i < words.length; i++) {
if (words[i] < words[i - 1]) return false;
}
return true;
};