diff options
Diffstat (limited to 'other/verify_alien_dict.cpp')
-rw-r--r-- | other/verify_alien_dict.cpp | 42 |
1 files changed, 0 insertions, 42 deletions
diff --git a/other/verify_alien_dict.cpp b/other/verify_alien_dict.cpp deleted file mode 100644 index 009ac52..0000000 --- a/other/verify_alien_dict.cpp +++ /dev/null @@ -1,42 +0,0 @@ -// 953. Verifying an Alien Dictionary -#include "leetcode.h" - -/* - * in an alien language, they also use english lowercase letters but in - * different 'order'. the 'order' of the alphabet is some permutation of - * lowercase letters. given a sequence of 'words' written in the alien language, - * and the 'order' of the alphabet, return 1 if and only if the given 'words' - * are sorted lexicographically in this alien language. - */ - -class Solution { -public: - bool isAlienSorted(vector<string> &words, string order) { - size_t indices[26]{}; - for (size_t i = 0; i < order.size(); ++i) - indices[order[i] - 'a'] = i; - return is_sorted(words.begin(), words.end(), - [&indices](const string &w1, const string &w2) { - auto l1 = w1.size(), l2 = w2.size(); - for (auto i = 0; i < min(l1, l2); ++i) { - auto c1 = w1[i], c2 = w2[i]; - if (c1 != c2) - return indices[c1 - 'a'] < indices[c2 - 'a']; - } - return l1 < l2; - }); - } -}; - -int main() { - Solution obj; - vector<string> words1 = {"hello", "leetcode"}; - vector<string> words2 = {"word", "world", "row"}; - vector<string> words3 = {"apple", "app"}; - cout << obj.isAlienSorted(words1, "hlabcdefgijkmnopqrstuvwxyz") - << endl; // expect: 1 - cout << obj.isAlienSorted(words2, "worldabcefghijkmnpqstuvxyz") - << endl; // expect: 0 - cout << obj.isAlienSorted(words3, "abcdefghijklmnopqrstuvwxyz") - << endl; // expect: 0 -} |