前言
今天好累啊,就一题了,明天一定……
1. 验证外星语词典
某种外星语也使用英文小写字母,但可能顺序 order 不同。字母表的顺序(order)是一些小写字母的排列。
给定一组用外星语书写的单词 words,以及其字母表的顺序 order,只有当给定的单词在这种外星语中按字典序排列时,返回 true;否则,返回 false。
1.1 遍历
先将字母表通过哈希存起来,然后遍历词典,逐字母进行比较就好了
class Solution {
public:
bool isAlienSorted(vector<string>& words, string order) {
if (words.size() == 1) return true;
map<char, int> myMap;
for (int i = 0; i < order.size(); i++) {
myMap[order[i]] = i;
}
for (int i = 1; i < words.size(); i++) {
int j;
bool flag = true;
for (j = 0; j < words[i].size() && j < words[i - 1].size(); j++) {
if (words[i][j] == words[i - 1][j]) continue;
if (myMap[words[i][j]] -
myMap[words[i - 1][j]] < 0) {
return false;
}
flag = false;
break;
}
if (flag && j < words[i - 1].size()) {
return false;
}
}
return true;
}
};
总结
真挺累的,今天早点睡觉……
本文介绍了如何使用哈希表实现外星语词典验证,通过逐个字符比较和字母表映射解决排序问题。博主以实例展示了如何编写一个C++解决方案,并分享了简单的遍历思路。
1272

被折叠的 条评论
为什么被折叠?



