版权声明:孔庆鑫 https://blog.csdn.net/kongqingxin12/article/details/84930181
953. 验证外星语词典
解题思路:根据题目要求,比较两个相邻字母是否按照order排序;创建(map)letter_orders,记录字典顺序;
比较即可
class Solution {
public:
bool isAlienSorted(vector<string>& words, string order)
{
int min_letter_length = words[0].length();
map<char, int> letter_orders;
letter_orders[' '] = 0;//空字符比其他字符都小记为0
for (int i = 0; i < order.length(); i++)
{
letter_orders[order[i]] = i + 1;
}
for (int i = 0; i < words.size() - 1; i++)
{
if (!check(words[i], words[i + 1], letter_orders))
return false;
}
return true;
}
bool check(string a, string b, map<char, int>letter_orders)
{
int sign = -1;
for (int i = 0; i < a.length(); i++)
{
if (letter_orders[a[i]] < letter_orders[b[i]])
{
return true;
}
else if (letter_orders[a[i]] > letter_orders[b[i]])
{
return false;
}
}
return true;
}
};