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 解釋?zhuān)涸谠撜Z(yǔ)言的字母表中,'h' 位于 'l' 之前,所以單詞序列是按字典序排列的。
示例 2:
輸入:words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz" 輸出:false 解釋?zhuān)涸谠撜Z(yǔ)言的字母表中,'d' 位于 'l' 之后,那么 words[0] > words[1],因此單詞序列不是按字典序排列的。
示例 3:
輸入:words = ["apple","app"], order = "abcdefghijklmnopqrstuvwxyz" 輸出:false 解釋?zhuān)寒?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è)字符都相等的話(huà),最后判斷下字符串的長(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)文章
Go返回int64類(lèi)型字段超出javascript Number范圍的解決方法
這篇文章主要介紹了Go返回int64類(lèi)型字段超出javascript Number范圍的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07通過(guò)案例簡(jiǎn)單聊聊為什么說(shuō)Go中的字符串是不能被修改的
在接觸Go這么語(yǔ)言,可能你經(jīng)常會(huì)聽(tīng)到這樣一句話(huà),對(duì)于字符串不能修改,可能你很納悶,日常開(kāi)發(fā)中我們對(duì)字符串進(jìn)行修改也是很正常的,為什么又說(shuō)Go中的字符串不能進(jìn)行修改呢,本文就來(lái)通過(guò)實(shí)際案例給大家演示,為什么Go中的字符串不能進(jìn)行修改2023-07-07Go創(chuàng)建一個(gè)包并使用(導(dǎo)入本地包和注意事項(xiàng))
有時(shí)候需要自己寫(xiě)一個(gè)包方便多次使用,但是在導(dǎo)入自己寫(xiě)的包時(shí)遇到了問(wèn)題,本文主要介紹了Go創(chuàng)建一個(gè)包并使用(導(dǎo)入本地包和注意事項(xiàng)),感興趣的可以了解一下2023-11-11Golang開(kāi)發(fā)命令行之flag包的使用方法
這篇文章主要介紹Golang開(kāi)發(fā)命令行及flag包的使用方法,日常命令行操作,相對(duì)應(yīng)的眾多命令行工具是提高生產(chǎn)力的必備工具,本文圍繞該內(nèi)容展開(kāi)話(huà)題,需要的朋友可以參考一下2021-10-10Golang極簡(jiǎn)入門(mén)教程(四):編寫(xiě)第一個(gè)項(xiàng)目
這篇文章主要介紹了Golang極簡(jiǎn)入門(mén)教程(四):編寫(xiě)第一個(gè)項(xiàng)目,本文講解了workspace、包路徑、第一個(gè)可執(zhí)行命令等內(nèi)容,需要的朋友可以參考下2014-10-10深入了解Golang?哈希算法之MD5、SHA-1和SHA-256
哈希算法是計(jì)算機(jī)科學(xué)領(lǐng)域中一種重要的技術(shù),它將任意長(zhǎng)度的輸入數(shù)據(jù)映射為固定長(zhǎng)度的哈希值,在本篇文章中,我們將深入探討Golang中的哈希算法,從多個(gè)方面介紹其詳細(xì)內(nèi)容,希望通過(guò)本文的閱讀你將對(duì)?Golang哈希算法有更全面的理解2023-05-05