【发布时间】:2020-01-26 05:10:02
【问题描述】:
我正在尝试解决一个问题,即我的程序将根据单词列表是否按照自定义或“外星人”字典的顺序返回 true 或 false。 假设这是给定的顺序: order = "hlabcdefgijkmnopqrstuvwxyz"
我试图创建一个字典,其中字母的 ascii 值将是键,值将从 0 到 (len(order) - 1) 但是我不断收到以下错误:
TypeError:字符串索引必须是整数
def isAlienSorted(self, words, order):
values = []
for i in range(0,len(order)):
values.append(i)
orderDict = dict(zip(order,values))
orderDict[None] = 0
for i in range(0,len(words) - 2):
if len(words[i])>len(words[i+1]):
return False
for i in range(0,len(words) - 2):
for j in words[i]:
if orderDict[words[i][j]]>orderDict[words[i+1][j]]:
return False
return True
只有 1 个测试用例通过:
1 / 115 个测试用例通过。
为什么会出现此运行时错误?
TypeError: string indices must be integers
错误在以下行被抛出:
(Line 21) if orderDict[words[i][j]]>orderDict[words[i+1][j]]:
【问题讨论】:
-
输入:words = ["hello","leetcode"], order = "hlabcdefgijkmnopqrstuvwxyz" 输出:true 解释:在这种语言中,由于 'h' 在 'l' 之前,那么序列是有序的.输入:words = ["word","world","row"], order = "worldabcefghijkmnpqstuvxyz" 输出:false 解释:由于在这种语言中 'd' 出现在 'l' 之后,因此 words[0] > words[1 ],因此序列是未排序的。
-
输入:words = ["apple","app"], order = "abcdefghijklmnopqrstuvwxyz" 输出:false 解释:前三个字符“app”匹配,第二个字符串较短(大小.) 根据词典规则"apple" > "app",因为'l' > '∅',其中'∅'定义为小于其他任何字符的空白字符
标签: python python-3.x python-2.7 dictionary hashmap