📌  相关文章
📜  Python|检查字符串是否重复

📅  最后修改于: 2022-05-13 01:54:37.163000             🧑  作者: Mango

Python|检查字符串是否重复

在使用字符串时,很多时候,我们会遇到一个用例,在该用例中,我们需要查找字符串中是否包含重复子字符串,该子字符串在整个字符串中重复,从而生成根子字符串的倍数。让我们讨论一些获取字符串根子字符串的方法。

方法#1:使用列表理解+蛮力
我们可以使用选择性切片和蛮力方式执行此任务。这是寻找字符串的天真方法,我们尝试通过重复划分字符串。

# Python3 code to demonstrate working of
# Check if string repeats itself
# Using List comprehension + Brute Force
  
# initializing string 
test_str = "GeeksforGeeksGeeksforGeeksGeeksforGeeks"
  
# printing original string 
print("The original string is : " + test_str)
  
# using List comprehension + Brute Force
# Check if string repeats itself
res = None
for i in range(1, len(test_str)//2 + 1):
    if (not len(test_str) % len(test_str[0:i]) and test_str[0:i] *
           (len(test_str)//len(test_str[0:i])) == test_str):
        res = test_str[0:i]
  
# printing result 
print("The root substring of string : " + res)
输出 :
The original string is : GeeksforGeeksGeeksforGeeksGeeksforGeeks
The root substring of string : GeeksforGeeks

方法 #2:使用列表切片 + find()

这个问题也可以解决,我们可以在添加一个字符串后搜索根字符串,并检查该字符串中的根字符串,除了最后一个和第一个字符,表示该字符串正在重复自身。
不适用于字符串长度 < 2。

# Python3 code to demonstrate working of
# Check if string repeats itself
# Using list slicing + find()
  
# initializing string 
test_str = "GeeksforGeeksGeeksforGeeksGeeksforGeeks"
  
# printing original string 
print("The original string is : " + test_str)
  
# using list slicing + find()
# Check if string repeats itself
res = None
temp = (test_str + test_str).find(test_str, 1, -1)
if temp != -1:
    res = test_str[:temp]
  
# printing result 
print("The root substring of string : " + res)
输出 :
The original string is : GeeksforGeeksGeeksforGeeksGeeksforGeeks
The root substring of string : GeeksforGeeks