我被分配到一组阿娜克在一起。
下面是测试用例之一:
输入:eat tea tan ate nat bat
输出:
ate eat tea bat nat tan
但是,我一直得到以下输出,其中将字谜封装在列表中,并且每行打印的顺序每次都不同:
['ate', 'eat', 'tea'] ['nat', 'tan'] ['bat']或
['nat', 'tan'] ['bat'] ['ate', 'eat', 'tea']或
['ate', 'eat', 'tea'] ['bat'] ['nat', 'tan']
我如何解决这个问题,使它的输出不被限制在一个列表中,并可能以正确的顺序?
这就是我到目前为止所做的:
import sys
from collections import *
def ComputeAnagrams(string):
d = defaultdict(list)
for word in string:
key = ''.join(sorted(word))
d[key].append(word)
return d
def main():
for string in sys.stdin:
stringList = string.split()
if len(stringList) == 0:
break
d = ComputeAnagrams(stringList)
for key,anagrams in d.items():
if len(anagrams) >=1:
print(sorted(anagrams))
print ('')
main()注意:运行此程序的机器从stdin/键盘读取输入,并将输出输出打印到控制台(Stdout)。
发布于 2015-09-30 10:51:35
我相信问题是-
print(sorted(''.join(anagrams)))在将列表加入到字符串之后,您使用的是sorted,在这种情况下,排序返回按排序顺序排列的字符列表(我猜这是您正在获得的当前输出)。
如果要按排序顺序排列元素,则应在anagrams列表中使用排序,而不是在加入后使用字符串。例子-
print(', '.join(sorted(anagrams)))我还使用', '连接字符串,以便使用,作为分隔符,否则输出将是所有字符串在一起,中间没有任何空格,如果需要,可以使用任何其他分隔符。
演示-
在上述改变之后-
投入-
eat tea tan ate nat bat产出-
bat
ate, eat, tea
nat, tanhttps://stackoverflow.com/questions/32864074
复制相似问题