Go語(yǔ)言leetcode題解953驗(yàn)證外星語(yǔ)詞典示例詳解
題目描述
某種外星語(yǔ)也使用英文小寫(xiě)字母,但可能順序 order 不同。字母表的順序(order)是一些小寫(xiě)字母的排列。
給定一組用外星語(yǔ)書(shū)寫(xiě)的單詞 words,以及其字母表的順序 order,只有當(dāng)給定的單詞在這種外星語(yǔ)中按字典序排列時(shí),返回 true;否則,返回 false。
示例 1:
輸入:words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz" 輸出:true 解釋:在該語(yǔ)言的字母表中,'h' 位于 'l' 之前,所以單詞序列是按字典序排列的。
示例 2:
輸入:words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz" 輸出:false 解釋:在該語(yǔ)言的字母表中,'d' 位于 'l' 之后,那么 words[0] > words[1],因此單詞序列不是按字典序排列的。
示例 3:
輸入:words = ["apple","app"], order = "abcdefghijklmnopqrstuvwxyz" 輸出:false 解釋:當(dāng)前三個(gè)字符 "app" 匹配時(shí),第二個(gè)字符串相對(duì)短一些,然后根據(jù)詞典編纂規(guī)則 "apple" > "app",因?yàn)?'l' > '?',其中 '?' 是空白字符,定義為比任何其他字符都?。ǜ嘈畔ⅲ?。
提示:
1 <= words.length <= 100
1 <= words[i].length <= 20
order.length == 26
在 words[i] 和 order 中的所有字符都是英文小寫(xiě)字母。
思路分析
- 哈希表存儲(chǔ)字母和對(duì)應(yīng)的索引,判斷字符串先后關(guān)系的時(shí)候要用到
- 然后比較兩個(gè)字符串,選較短的長(zhǎng)度來(lái)比較
- a[i]對(duì)應(yīng)的字典中的索引為indexA;
- b[i]對(duì)應(yīng)的字典中的索引為indexB;
- 如果indexA < indexB, 直接返回true;
- 如果indexA > indexB, 直接返回false;
- 如果前minLen個(gè)字符都相等的話,最后判斷下字符串的長(zhǎng)度
AC 代碼
class Solution {
public:
bool compare(string& a, string& b, unordered_map<char, int>& mp) {
int sizeA = a.size();
int sizeB = b.size();
int minLen = sizeA > sizeB ? sizeB : sizeA;
int same = 0;
for (int i = 0; i < minLen; i++) {
if (mp[a[i]] < mp[b[i]]) {
return true;
} else if(mp[a[i]] > mp[b[i]]) {
return false;
}else if (mp[a[i]] == mp[b[i]]) {
same++;
}
}
if (same == minLen) {
return a.size() < b.size();
}
return false;
}
bool isAlienSorted(vector<string>& words, string order) {
unordered_map<char, int> mp;
for (int i = 0; i < 26; i++) {
mp[order[i]] = i;
}
int size = words.size();
if (size == 1) {
return true;
}
for (int i = 0; i < (size - 1); i++) {
if (compare(words[i], words[i+1], mp) == false) {
return false;
}
}
return true;
}
};以上就是Go語(yǔ)言leetcode題解953驗(yàn)證外星語(yǔ)詞典示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go 驗(yàn)證外星語(yǔ)詞典的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Golang中的select語(yǔ)句及其應(yīng)用實(shí)例
本文將介紹Golang中的select語(yǔ)句的使用方法和作用,并通過(guò)代碼示例展示其在并發(fā)編程中的實(shí)際應(yīng)用,此外,還提供了一些與select相關(guān)的面試題,幫助讀者更好地理解和應(yīng)用select語(yǔ)句2023-12-12
Linux系統(tǒng)下Go語(yǔ)言開(kāi)發(fā)環(huán)境搭建
這篇文章主要介紹了Linux系統(tǒng)下Go開(kāi)發(fā)環(huán)境搭建,需要的朋友可以參考下2022-04-04
Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比
這篇文章主要介紹了Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05
Go語(yǔ)言協(xié)程通道使用的問(wèn)題小結(jié)
本文主要介紹了Go語(yǔ)言協(xié)程通道使用的問(wèn)題小結(jié),詳細(xì)的介紹了使用的一些重要問(wèn)題,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08

