输入的第一行应该以测试用例的数量开始。以下几行应该包含由一个或多个单词组成的测试用例,用空格分隔。一个单词由扩展Ascii编码的256个字符中的任何一个组成。
样本输入:
3
Good day
Hello there!
You're my #1!
然后,输出应该为每个测试用例输出一行,其中包含按字母顺序(基于unicode顺序(排序的唯一字符(不区分大小写(,同时忽略空白。
样本输出:
adgoy
!ehlort
!#'1emoruy
我正在想办法解决这个问题,但我一无所获。我应该如何处理?
编辑添加:我发现了以下函数:ord((-获取字符的unicode,chr((-获得给定unicode 的字符
让我们调用要按unicodes
:排序的字符串
s = 'Good day'
首先,你需要删除空白有多种方法,一种是str.translate
,如下表所示:
s = s.translate({32: None, 9: None, 10: None, 13: None, 11: None, 12: None})
现在,由于您想忽略这种情况,您需要在字符串上调用.upper
、.lower
或.casefold
,并重新分配它:
s = s.lower()
因为您只需要字符串中的唯一字符,所以可以将其转换为set
:
s = set(s)
因为set
是无序的,所以必须先转换它,然后才能对它进行排序(在本例中为list
(
s = list(s)
现在你需要按照他们的unicode编号进行排序:
s.sort(key=ord) # do not reassign
最后,您需要将其重新转换为字符串:
s = ''.join(s)
在所有步骤中使用相同的变量名有时被认为是一种糟糕的做法,因为这可能很难调试
在完整的代码中,我结合了一些步骤并更改了变量名:
def sort_by_unicode(s):
s = s.translate({32: None, 9: None, 10: None, 13: None, 11: None, 12: None}).lower()
l = list(set(s))
l.sort(key=ord)
return ''.join(l)