语法练习:string_match

语法练习:string_match

题目:string_match

Given 2 strings, a and b, return the number of the positions where they contain the same length 2 substring. So “xxcaazz” and “xxbaaz” yields 3, since the “xx”, “aa”, and “az” substrings appear in the same place in both strings.

string_match(‘xxcaazz’, ‘xxbaaz’) → 3
string_match(‘abc’, ‘abc’) → 2
string_match(‘abc’, ‘axc’) → 0

我的解答:

def string_match(a, b):
  count = 0
  if len(a) < 2 or len(b) < 2:
    return 0
  else:
    for i in range(min(len(a),len(b)) - 1):
      sub_a = a[i:i+2]
      sub_b = b[i:i+2]
      if sub_a == sub_b:
        count += 1
    return count

Expected Run
string_match(‘xxcaazz’, ‘xxbaaz’) → 3 3 OK
string_match(‘abc’, ‘abc’) → 2 2 OK
string_match(‘abc’, ‘axc’) → 0 0 OK
string_match(‘hello’, ‘he’) → 1 1 OK
string_match(‘he’, ‘hello’) → 1 1 OK
string_match(‘h’, ‘hello’) → 0 0 OK
string_match(‘’, ‘hello’) → 0 0 OK
string_match(‘aabbccdd’, ‘abbbxxd’) → 1 1 OK
string_match(‘aaxxaaxx’, ‘iaxxai’) → 3 3 OK
string_match(‘iaxxai’, ‘aaxxaaxx’) → 3 3 OK

All Correct

标答:

def string_match(a, b):
  # Figure which string is shorter.
  shorter = min(len(a), len(b))
  count = 0
  
  # Loop i over every substring starting spot.
  # Use length-1 here, so can use char str[i+1] in the loop
  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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值