如何在 Python 中判斷字串是否自身重複?
在本文中,我們將瞭解如何在 Python 中判斷字串是否自身重複。
第一種方法是使用切片和find()函式。我們想要檢視給定的字串是否完全由其子字串的重複構成。我們可以透過在一個字串對中查詢字串的旋轉來確認這一點。
在新增一個字串並在該字串中檢查根字串(除了最後一個和第一個字元)後,我們可以搜尋根字串。這種方法不適用於長度小於 2 的字串。
示例 1
在下面給出的示例中,我們以字串作為輸入,並使用切片和find()方法檢查它是否重複 −
def find_period(s): i = (s+s).find(s, 1, -1) return None if i == -1 else s[:i] str1 = '012012012012012' print("The given string is") print(str1) print("Checking if any substring that is repeating") res = find_period(str1) print(res)
輸出
上面示例的輸出如下所示 −
The given string is 012012012012012 Checking if any substring that is repeating 012
示例 2
在下面給出的示例中,我們使用與上面相同的程式,但使用不同的輸入並檢查它是否重複 −
def find_period(s): i = (s+s).find(s, 1, -1) return None if i == -1 else s[:i] str1 = 'abcdefgh' print("The given string is") print(str1) print("Checking if any substring that is repeating") res = find_period(str1) print(res)
輸出
上面示例的輸出如下所示 −
The given string is abcdefgh Checking if any substring that is repeating None
使用暴力破解方法
第二種方法是暴力破解方法,我們將不斷迭代字串並檢查重複序列。這項工作可以透過選擇性切片和暴力破解方法來完成。這是一種原始的字串發現方法,我們嘗試透過重複劃分字串來識別根字串。
示例
在下面給出的示例中,我們以字串作為輸入,並使用列表推導式檢查字串的任何部分是否重複 −
str1 = '012012012012012' print("The given string is") print(str1) print("Checking if any substring that is repeating") res = None for i in range(1, len(str1)//2 + 1): if (not len(str1) % len(str1[0:i]) and str1[0:i] *(len(str1)//len(str1[0:i])) == str1): res = str1[0:i] print(res)
輸出
上面示例的輸出如下所示 −
The given string is 012012012012012 Checking if any substring that is repeating 012
廣告