验证外星语词典 - C++力扣953题

题目链接:https://leetcode.com/problems/verifying-an-alien-dictionary/description/

解题思路

字典序比较其实就是入门级问题,就是加了个重定义顺序而已。这题有手就行。首先我们先把字典序记录下来,然后弄一个函数来一个一个的比较,按照力扣给的条件写就行。然后基本上遍历一遍没有不符合条件的话就直接返回 true 就行。

完整代码:

class Solution {
public:

    int dict[26] = {0};

    bool compare(string s1, string s2) {
        int j = 0;
        while(j < s1.size() && j < s2.size()) {
            if(s1[j] == s2[j]) j++;
            else if(dict[s1[j] - 'a'] > dict[s2[j] - 'a']) return false;
            else return true;
        }
        if(s1.size() > s2.size()) return false;

        return true;
    }

    bool isAlienSorted(vector<string>& words, string order) {
        for(int i = 0; i < order.size(); i++) dict[order[i] - 'a'] = i;

        for(int i = 1; i < words.size(); i++) {
            string s1 = words[i - 1], s2 = words[i];
            if(compare(s1, s2) == false) return false;
        }

        return true;
    }
};