如何在 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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP