#!/usr/bin/env python3
import fileinput
for line in fileinput.input():
if len(line) == len(set(line)): # all chars in the line are unique
print(line, end='')
def has_dup(strings):
used = set()
for letter in string:
if letter in used:
return True
else:
used.add(letter)
return False
def only_without_dups(string):
return [string for string in strings if not has_dup(string)]
# Тестировка
strings = ["Hello, world", "abcdABCD", "abcdAbCD", "xyzXYZ"]
result = only_without_dups(strings)
print(result)
黑客乐此不疲!
从逻辑上讲,任务分为
./get_line_uniq_chars.sh
如果您需要从文件中读取,我们会得到什么,将 make_strings 函数替换为从文件中读取
cat "$1" | get_lines_uniq_chars要过滤重复任何字符的行:
使用@Anton 在评论中建议的字符唯一性条件。
示例:
这也支持在当前编码(区域设置)中可能占用超过一个字节的非 ascii 字符。它不支持由多个 Unicode 代码点组成的字符(例如
ё--U+0435U+308)。如果您想支持此类字母,请参阅如何将字符串拆分为单独的字符?结论:
解释:
该函数
has_dup()收集一组字符串中使用的字符,used并将任何连续字符与该组中的字符进行比较 - 命令当它匹配时,字符串中的字符被重复,并且函数立即终止,返回一个值
True。