Сложность: hard
В инопланетном языке, как ни странно, тоже используются английские строчные буквы, но, возможно, в другом порядке. Порядок алфавита - это некоторая перестановка строчных букв. Учитывая последовательность слов, написанных на инопланетном языке, и порядок алфавита, верните true тогда и только тогда, когда данные слова отсортированы лексикографически на этом инопланетном языке.
Пример:
Input: words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
Output: true
👨💻 Алгоритм:
1⃣Создать словарь для хранения порядка каждой буквы в инопланетном языке.
Пройти по каждому слову и сравнить его с последующим словом.
2⃣Для каждого слова, сравнить буквы, используя созданный словарь порядка.
Если обнаружена пара слов, нарушающая порядок, вернуть false.
3⃣Если все слова отсортированы правильно, вернуть true.
😎 Решение:
var isAlienSorted = function(words, order) {
const orderMap = new Map();
for (let i = 0; i < order.length; i++) {
orderMap.set(order[i], i);
}
const compare = (word1, word2) => {
const minLength = Math.min(word1.length, word2.length);
for (let i = 0; i < minLength; i++) {
if (orderMap.get(word1[i]) < orderMap.get(word2[i])) {
return true;
} else if (orderMap.get(word1[i]) > orderMap.get(word2[i])) {
return false;
}
}
return word1.length <= word2.length;
};
for (let i = 0; i < words.length - 1; i++) {
if (!compare(words[i], words[i + 1])) {
return false;
}
}
return true;
};Ставь 👍 и забирай 📚 Базу знаний