【问题标题】:Matching substring in the same place on two different strings?在两个不同的字符串上的相同位置匹配子字符串?
【发布时间】:2020-07-24 05:36:16
【问题描述】:

我一直在尝试解决 Python 中的一个编码问题。

这是问题定义:

给定 2 个字符串,a 和 b,返回位置的数量 它们包含相同的长度为 2 的子字符串。所以“xxcaazz”和“xxbaaz” 产生 3,因为“xx”、“aa”和“az”子字符串出现在同一个 放在两个字符串中。

string_match('xxcaazz', 'xxbaaz') → 3

string_match('abc', 'abc') → 2

string_match('abc', 'axc') → 0

这是我的代码:

def string_match(a, b):
  count = 0
  for i in range(len(a)-1):
    for j in range(len(b)-1):
      if a[i:i+2] == b[j:j+2]:
        count += 1
  return count

以上代码的输出:

我无法弄清楚我的代码有什么问题。

希望你能帮助我。期待回复。

【问题讨论】:

标签: python python-3.x string list


【解决方案1】:

这应该可以完成工作,通过了所有测试用例。

def string_match(a, b):
    found = 0
    for i in range(min([len(a), len(b)])-1):
        if a[i] == b[i] and a[i+1] == b[i+1]:
            found += 1
    return found

print(string_match('iaxxai', 'aaxxaaxx'))

你不需要拆分字符串,你只需要检查i和i + 1的字符是否相等。如果您想检查它的 n 长度,您可能需要一个内部循环。它也适用于len(a) != len(b)。

【讨论】:

    【解决方案2】:
    def string_match(a, b):
    
        shorter = min(len(a), len(b))
        count = 0
    
        for i in range(shorter-1):
            a_sub = a[i:i+2]
            b_sub = b[i:i+2]
            if a_sub == b_sub:
            count = count + 1
    
        return count
    

    【讨论】:

    • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
    猜你喜欢
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2020-07-07
    • 1970-01-01
    相关资源
    最近更新 更多