*这一道题我不知道该怎么写,没有思路。请各位大佬告告我该怎么写?

3 条评论

  • @ 2023-6-18 19:03:05
    def find2(s1, s2):
        # 分步提示:
        #     1. 通过遍历字符串 s1, 用 切片 的方法取出每一个与 s2 长度相等的字符串判断, 如果某次循环的元素与 s2 相等, 就找到了 s2 在 s1 中的下标
        #     2. 如果循环结束后都没有找到, 就让 index 的值为 -1
        #     注意,如果 s2 在 s1 中出现了多次, 只返回第一次出现的位置
        for i in range(len(s1)):
            end = i + len(s2)
            if end > len(s1):
                return -1
            else:
                c = s1[i:i + len(s2)]
                if c == s2:
                    return i
    def find_between(s, left, right):
        # 分步提示:
        # 1, 观察用法可以知道本函数的功能就是把 left 和 right 之间包含的字符串提取出来
        # 2, 为了实现这个目的, 我们的想法应该是拿到 目标字符串 的开始和结束下标, 然后用 切片 的方式提取
        # 3, 我们先定位到 left 的下标(使用 find2 函数), 加上 left 的长度就可以得到结果的开始下标(具体你要通过 log 的方式来尝试, 纸笔计算好)
        # 4, 我们再定位到 right 的下标, 就可以切片出目标字符串
        # 5, 返回目标字符串
        index1 = find2(s,left)
        index2 = find2(s,right)
        index1 = index1 + len(left)
        return s[index1:index2]
    s1 = 'meet #<gua># halfway'
    s2 = 'meet #<gua># #<high>#way'
    left = '#<'
    right = '>#'
    content1 = find_between(s1, left, right)
    content2 = find_between(s2, left, right)
    print('结果1 ', content1)  # 预期结果:gua
    print('结果2 ', content2)  # 预期结果:gua
    
    • @ 2023-1-15 21:20:18

      感谢,我刚才重新听了一下课。明白了 😄 🎉️ 🎉️

      ❤️ 1
        1. 你参考一下😄
        def find2(s1, s2):
            for i in range(len(s1)):
                end=i+len(s2)
                if end>len(s1):
                    return -1
                else:
                    c=s1[i:i+len(s2)]
                    if c==s2:
                        return i
        def find_between(s, left, right):
            index1=find2(s,left)
            index2 = find2(s,right)
            index1=index1+len(left)
            return s[index1:index2]
        
        s1 = 'meet #<gua># halfway'
        s2 = 'meet #<gua># #<high>#way'
        left = '#<'
        right = '>#'
        content1 = find_between(s1, left, right)
        content2 = find_between(s2, left, right)
        print('结果1 ', content1)
        print('结果2 ', content2)
        def read_file(file_name):
            with open(file_name, 'r') as f:
                return f.read()
        
        😄 1
        • 1

        信息

        ID
        179
        时间
        1000ms
        内存
        256MiB
        难度
        7
        标签
        递交数
        782
        已通过
        153
        上传者