在Python中查找和替换模式
假设我们有一个单词列表和一个模式,并且我们必须找到单词中哪些单词与该模式匹配。如果存在字母p的排列,则单词会与模式匹配,因此将模式中的每个字母x替换为p(x)后,我们将获得目标单词。我们必须找到与给定模式匹配的单词列表。
因此,例如,如果输入类似于[“abc”,“deq”,“mee”,“aqq”,“dkd”,“ccc”]],而模式为“abb”,则输出为[“mee”,“aqq”],这里mee和aqq与模式“abb”的样式匹配。但是“ccc”不是模式,因为这不是排列。
为了解决这个问题,我们将遵循以下步骤-
定义一种convert()方法。这将以单词作为输入,其作用类似于-
计数器:=1,s:=空字符串
s:=s+计数器的字符串等效
因为我的范围是1到字长–1
如果单词[j]是单词[i],则中断
将j减1
j:=i–1
当j>=0时
如果j>-1,则s:=s+s[j],否则将计数器增加1,并将s:=s+计数器值作为字符串
返回s
实际的方法会像
制作一个数组word_num,这是空的,制作另一个空数组res
对于单词中的每个元素-
将convert(i)插入word_num
模式:=convert(pattern)
对于i,范围从0到字长–1
如果words_num[i]=模式,则将words[i]插入res
返回资源
让我们看下面的实现以更好地理解-
示例
class Solution(object):
def findAndReplacePattern(self, words, pattern):
words_num = []
result = []
for i in words:
words_num.append(self.convert(i))
pattern = self.convert(pattern)
for i in range(len(words)):
if words_num[i] == pattern:
result.append(words[i])
return result
def convert(self,word):
counter = 1
s = ""
s+=str(counter)
for i in range(1,len(word)):
j= i -1
while j>=0:
if word[j] == word[i]:
break
j-=1
if j >-1:
s+=s[j]
else:
counter+=1
s+=str(counter)
return s
ob = Solution()print(ob.findAndReplacePattern(["abc","deq","mee","aqq","dkd","ccc"],"abb"))输入值
["abc","deq","mee","aqq","dkd","ccc"] "abb"
输出结果
['mee', 'aqq']