Python中的字符串切片以检查字符串是否可以通过递归删除变为空
给定一个字符串“str”和另一个字符串“sub_str”。我们可以从“str”中删除“sub_str”任意次数。还假设“sub_str”一次只出现一次。任务是通过一次又一次地删除“sub_str”来查找“str”是否可以变为空。
例子:
Input : str = "GEEGEEKSKS", sub_str = "GEEKS"
Output : Yes
Explanation : In the string GEEGEEKSKS, we can first
delete the substring GEEKS from position 4.
The new string now becomes GEEKS. We can
again delete sub-string GEEKS from position 1.
Now the string becomes empty.
Input : str = "GEEGEEKSSGEK", sub_str = "GEEKS"
Output : No
Explanation : In the string it is not possible to make the
string empty in any possible manner.
我们有针对此问题的现有解决方案,请参阅通过递归删除给定的子字符串链接来检查字符串是否可以变为空。我们将在Python中使用字符串切片来解决这个问题。方法很简单,
- 使用字符串的 find() 方法搜索给定的模式子字符串。
- 如果子字符串位于主字符串中,则 find函数将返回它第一次出现的索引。
- 现在将字符串分成两部分,(i)从字符串的开头到已建立的子字符串的索引 1,(ii)(从已建立的子字符串的第一个索引开始 + 子字符串的长度)到字符串的结尾。
- 连接这两个切片部分并从步骤 1 开始重复,直到原始字符串变为空或我们不再找到子字符串。
def checkEmpty(input, pattern):
# If both are empty
if len(input)== 0 and len(pattern)== 0:
return 'true'
# If only pattern is empty
if len(pattern)== 0:
return 'true'
while (len(input) != 0):
# find sub-string in main string
index = input.find(pattern)
# check if sub-string founded or not
if (index ==(-1)):
return 'false'
# slice input string in two parts and concatenate
input = input[0:index] + input[index + len(pattern):]
return 'true'
# Driver program
if __name__ == "__main__":
input ='GEEGEEKSKS'
pattern ='GEEKS'
print (checkEmpty(input, pattern))
输出:
true