前言
今天好累啊,就一题了,明天一定……
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;
}
};
总结
真挺累的,今天早点睡觉……