首页 > 试题广场 >

串的模式匹配

[编程题]串的模式匹配
  • 热度指数:13735 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

对于两个字符串A,B。请设计一个高效算法,找到B在A中第一次出现的起始位置。若B未在A中出现,则返回-1。

给定两个字符串AB,及它们的长度lenalenb,请返回题目所求的答案。

测试样例:
"acbc",4,"bc",2
返回:2
# -*- coding:utf-8 -*-

class StringPattern:
    def findAppearance(self, A, lena, B, lenb):
        # write code here
        result=A.find(B)
        return result  
python 大法好
编辑于 2019-07-17 10:47:04 回复(0)
class StringPattern:
    def findAppearance(self, A, lena, B, lenb):
        # write code here
        ###正则表达式
        import re
        if re.search(B,A)==None:
            return -1
        else:
            a=re.search(B,A).span()
            return a[0]

发表于 2018-08-23 16:49:22 回复(0)
# -*- coding:utf-8 -*-
class StringPattern:
    def findAppearance(self, A, lena, B, lenb):
        return A.find(B)

发表于 2018-08-08 10:56:57 回复(0)

python只需要一行的解法:

return A.index(B) if B in A else -1
编辑于 2017-09-12 14:05:53 回复(3)
#思路也是很简单如果再B在A中用index 如果B不在A中return-1
# -*- coding:utf-8 -*-

class StringPattern:
    def findAppearance(self, A, lena, B, lenb):
        # write code here
        if B in A:
            return A.index(B)
        else:
            return -1
发表于 2017-07-23 10:03:45 回复(0)
class StringPattern:
    def findAppearance(self, A, lena, B, lenb):
        try:
            return A.index(B)
        except:
            return -1

发表于 2016-12-28 22:38:44 回复(1)
class StringPattern:
    def findAppearance(self, A, lena, B, lenb):
        if lena < lenb:
            return -1
        index = -1
        bi = 0
        ai = 0
        for item in A:
            if item == B[bi]:
                if bi == 0:
                    index = ai
                else:
                    pass
                bi += 1
                if bi >= lenb:
                    break
            else:
                index = -1
                bi = 0
            ai += 1
        return index
发表于 2016-09-03 15:44:23 回复(0)