基于Unicode顺序的大小写不敏感字符去重排序实现思路咨询
问题需求
- 输入第一行是测试用例数量,后续每一行对应一个测试用例
- 每个测试用例包含1个或多个空格分隔的单词,单词字符来自Extended ASCII编码的256个任意字符
- 输出要求:每个测试用例忽略空格,对字符做大小写不敏感去重后,按Unicode顺序升序排序,输出为单行字符串
示例输入
3 Good day Hello there! You're my #1!
示例输出
adgoy !ehlort !#'1emoruy
实现思路
按以下步骤逐步处理即可:
- 读取第一行输入,转换为整数得到测试用例总数
- 遍历处理每个测试用例:
- 逐字符遍历当前测试用例字符串,首先跳过所有空格字符
- 维护一个已出现字符的集合,将当前字符统一转为小写后判断是否已经出现过:如果没出现过,就把小写形式加入待排序列表,同时把该小写字符标记为已出现
- 对去重后的待排字符列表直接做默认排序,Python内置的字符排序逻辑默认就是按Unicode码点升序排列,完全符合题目要求
- 将排序后的字符列表拼接为字符串直接输出即可
参考实现(Python)
n = int(input()) for _ in range(n): line = input() seen = set() unique_chars = [] for c in line: if c == " ": continue lower_c = c.lower() if lower_c not in seen: seen.add(lower_c) unique_chars.append(lower_c) print("".join(sorted(unique_chars)))
内容的提问来源于stack exchange,提问作者Clover
相关产品推荐
相关产品推荐

