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