共计 1452 个字符,预计需要花费 4 分钟才能阅读完成。
导读 | 这篇文章主要介绍了 python 实现两字符串映射方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 |
python 两字符串映射
题目:
class Solution: | |
def is_pattern_matched(self, pattern:str,s: str) -> bool: | |
pattern = list(''.join(pattern)) | |
s = s.split(" ") | |
a = {} | |
for i in range(len(pattern)): | |
a.update({pattern[i]:s[i]})#update() 方法用于修改 / 更新当前集合 / 字典,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。# a = zip(pattern,s) | |
# a = dict(a) | |
for j in range(len(pattern)): | |
if s[j] != a[pattern[j]]: | |
return False | |
else: | |
return True | |
pattern = "abba" | |
s = "dog cat cat dog" | |
S = Solution() | |
result = S.is_pattern_matched(pattern,s) | |
print(result) |
python 字符映射表和字符替换
python 中有一个内建函数 maketrans()可以对两个字符串进行字符映射,创建出映射表。
结构如下:
str.maketrans(intab,outtab)
当使用该函数时,将会把 intab 中的字符串对 out 字符串中的字符进行一一对应。
而使用 translate()函数则可以利用映射表字符对指定字符串的字符进行替换。
结构如下:
str.translate(table)
示例:
str1="abcdefghijklmnopqrstuvwxyz" | |
str2="qwertyuiopasdfghjklzxcvbnm" | |
table=str.maketrans(str1,str2) | |
str="sword art online" | |
print(str.translate(table))#==>lvgkr qkz gfsoft |
上面的例子使用了这两个函数写了一个简单的加密程序。其中 str1 是函数 str.maketrans(intab,outtab)
中的 intab,而 str2 是 str.maketrans(intab,outtab)
中的 outtab。
不过这种加密方法有一个问题。就是 intab 与 outtab 所代表的的字符串的长度必须一致,且各自的字符串中的字符必须唯一,否则解密时容易出错。
示例:
str1="abcdefghijklmnopqrstuvwxyz" | |
str2="qwertyuiopasdfghjklzxcvbnm" | |
table1=str.maketrans(str1,str2) | |
table1_1=str.maketrans(str2,str1) | |
str="sword art online" | |
jiami=str.translate(table1) | |
jiemi=jiami.translate(table1_1) | |
print(jiami)#==>lvgkr qkz gfsoft | |
print(jiemi)#==>sword art online |
正文完
星哥玩云-微信公众号
