首页 > 解决方案 > 有什么方法可以在数组中重复一个字母吗?

问题描述

所以,这是我的问题:

我需要一种方法来计算数组中相等字母的差异,如果这还不够清楚,这里有一个例子:
In: estate
Out: +5 0 +2 0 0 0
In: tenant
Out: +5 0 +2 0 0 0
Explanation
所以,+5 表示“e”重复5 位后,0 表示不重复在“租户”中也必须相同。

到目前为止我有这个:

from collections import Counter
DEBUG = True
#############################################################
class Isomorph_Tools:
  def isIsomorphic(w1,w2) : 
    if len(w1) != len(w2): return False
    return [len(set(w1)),len(set(w2))] == 2 * [len(set(zip(w1,w2)))]


def get_len(a):
  counter=0
  for i in a:
    counter = counter + 1
  return counter

def do_1(ary,inx):
  for i in ary:
    no = 0
    for j in ary:
      for l in range(0,get_len(ary)):
        if ary.index(i) == inx and ary.index(i) != ary[l]:
          no+=1
          return no
        else:
          return 0

def main(a,b):
  words = [a.split(" "),b.split(" ")]
  if not(Isomorph_Tools.isIsomorphic(words[0],words[1])):
    print(words[0] + ', ' + words[1] + 'are not isomorphs')
    return
  else:
    lettersOne = list(words[0][0])
    print(lettersOne)
    lettersTwo = list(words[1][0])
    print(lettersTwo)
    the_ones = []
    ####Start The Calculation####
    for letter in lettersOne:
      letterIndex = lettersOne.index(letter)
      print(lettersOne.index(letter))
      for i in 
      the_ones.append(do_1(lettersOne,letterIndex))
      print(the_ones)

main('estate','tenant')

请帮忙

标签: python

解决方案


我假设您想查找下一个重复元素与当前元素的距离。

这是您可以执行的一种方法:

s = 'estate'

print([next((j for j, x in enumerate(s[i+1:], 1) if s[i] == x), 0) for i in range(len(s))])
# [5, 0, 2, 0, 0, 0]

同样'tenant',它输出[5, 0, 2, 0, 0, 0]. 忘记迹象,无论如何它都是积极的。


推荐阅读