在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']