題目
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/verifying-an-alien-dictionary
某種外星語也使用英文小寫字母阶冈,但可能順序 order 不同瓷们。字母表的順序(order)是一些小寫字母的排列价淌。
給定一組用外星語書寫的單詞 words榨馁,以及其字母表的順序 order,只有當(dāng)給定的單詞在這種外星語中按字典序排列時(shí)酝陈,返回 true床玻;否則,返回 false沉帮。
- 示例 1:
輸入:words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz"
輸出:true
解釋:在該語言的字母表中锈死,'h' 位于 'l' 之前贫堰,所以單詞序列是按字典序排列的。
- 示例 2:
輸入:words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz"
輸出:false
解釋:在該語言的字母表中待牵,'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' > '?'蛤袒,其中 '?' 是空白字符,定義為比任何其他字符都信蚋(更多信息)妙真。
解法
func isAlienSorted(words []string, order string) bool {
wordsLen := len(words)
orderLen := len(order)
if orderLen != 26 {
return false
}
for i := 0; i < wordsLen-1; i++ {
word1 := words[i]
word2 := words[i+1]
for index, value := range word1 {
if index > len(word2)-1 {
return false
}
str1 := string(value)
// 在order中的位置
str1OI := strings.Index(order, str1)
str2 := string(word2[index])
str2OI := strings.Index(order, str2)
if str1OI < str2OI {
break
}
if str1OI > str2OI {
return false
}
}
}
return true
}