当前位置: 高中信息技术 / 综合题
  • 1. (2023高二下·杭州期中) 小明编写一个Python程序,实现找到字符串s1和s2中相同的最长子串s,并定位子串在字符串s2中出现的位置,运行结果如图:

    1. (1) 如输入s1和s2分别为 “hello”和“hi”( 不含引号),输出最长共同子串是
    2. (2) 定义longstr函数,功能是找到字符串s1和s2中相同的最长子串,请在划线处填入合适的代码。

      def longstr(s1, s2):

          m = [[0] * (1 + len(s2)) for i in range(1 + len(s1))]

          t, h = 0, 0

          for i in range(1, 1 + len(s1)):

              for j in range(1, 1 + len(s2)):

                  if

                      m[i][j] = m[i - 1][j - 1] + 1

                      if m[i][j] > t:

                          t = m[i][j]

                         

                  else:

                      m[i][j] = 0

      return s1[h - t:h]

    3. (3) 定义pos函数,功能是定位子串在字符串s2中出现的位置,请在划线处填入合适的代码。

      pos(st):

          print("子串出现位置: ")

          start = 0

          if len(st) > 0:

              while True:

                  start = s2.find(st, start)    #返回字符串s2中子串st出现的首字符索引,从索引start开始找,若找不到,则输出-1

                  if start == - 1:

                      break

                  print(start, end="/")

                 

    4. (4)  主程序,请在划线处填入合适的代码

      s1 = input("s1:")

      s2 = input("s2:")

      s =

      print("最长共同子串: ", s)

      pos(s)

微信扫码预览、分享更方便