如何在 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

更新於: 2022-12-07

1K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告