python實現兩字串對映詳解

大雄45發表於2023-04-20
導讀 這篇文章主要介紹了python實現兩字串對映方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
python兩字串對映

題目:

pattern = "abba",s="dog cat cat dog"---->True

pattern = "abba",s="dog cat cat fish"----->False

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

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2945094/,如需轉載,請註明出處,否則將追究法律責任。

相關文章