题目属实看不懂。。 鬼东西
大致就是order决定了大小规律
然后判断单词数组离的多个字符串的大小是否是按照升序排列
如果第一个字符就小于后边字符串的第一个字符 那么第一个字符串小于第二个字符串
如果相等的话 继续往后比较
如果第一个字符大于后边字符串的第一个字符 那么第一个字符串大于第二个字符串 返回false
func isAlienSorted(_ words: [String], _ order: String) -> Bool {
var dict = Dictionary<Character,Int>()
let orderArray = Array(order)
for i in 0..<orderArray.count {
dict[orderArray[i]] = i
}
for i in 0..<words.count - 1 {
let word1 = Array(words[i])
let word2 = Array(words[i + 1])
let m = word1.count
let n = word2.count
for j in 0..<max(m, n) {
let value1 = j < m ? (dict[word1[j]] ?? 0): -1
let value2 = j < n ? (dict[word2[j]] ?? 0): -1
if value1 < value2 {
break
}
if value1 > value2 {
return false
}
}
}
return true
}
网友评论