京东算法字符串匹配通过25%,不知道哪里错了

T=input()
S=input()
def gggg(l1,l2):
    l=0
    r=len(l1)-1
    while l<r:
            t1 = l1[l]-l1[r]
            t2 = l2[l]-l2[r]
            l+=1
            r-=1
            if t1!=t2:
                return 0
    return 1
def getMatch(A,B):
    aa = bytes(A,encoding='utf-8')
    bb = bytes(B,encoding='utf-8')
    if len(aa)<len(bb):
        temp =aa
        aa=bb
        bb=temp
    num=0

    for i in range(len(aa)-len(bb)+1):
        cc=[]
        print(i,aa[i])
        for j in range(len(bb)):
            cc.append(aa[i+j] + bb[j])     
        if gggg(cc,bb)==1:
            num+=1   
    return num
getMatch(S,T)
# print(gggg(b"aba",b'cyx'))
#京东##笔试题目#
全部评论
兄弟我只能告诉你直接输出个3都是25%。。。。。
点赞 回复 分享
发布于 2018-09-09 21:40
我用KMP算法的思路过了80%  后边就开始超时了
点赞 回复 分享
发布于 2018-09-09 21:31
我用的数字编码,也只过了75%
点赞 回复 分享
发布于 2018-09-09 21:33

相关推荐

03-15 20:26
已编辑
电子科技大学 C++
T3题面:给一个3e5数组,每次询问长度为len的子数组乘积的和,如果子数组乘积&gt;1e9,则视为0.赛后一分钟想出来了,比赛时打了个暴力+线段树注意到1e9大约是2^30,&nbsp;因此len长度如果&gt;30就直接输出0,30以内做一个记忆化就行,复杂度O(30*n)感觉是以前比赛做过的题,忘了怎么做了。。。---upd:&nbsp;忘了数据范围了,如果有0,1的话那这样也不行
blueswiller:给出一个做法,刚刚才想到,应该没问题,时间复杂度为 O(max(30n, nlogn)): 1. 根据 0 切分数组。2. 现在问题转化为>=1 的情况,我们首先维护每一个数前一个 > 1 的数的位置,同时维护一个长度的差分数组,初始值全为 0。3. 我们从每一个数 i 开始向前跳,至多跳 30 次,维护这个过程中的乘积,于是得到 30 个区间加和。举例:假设从 j1 跳到 j2 ,相当于对查询长度 (i- j1 + 1) 至 (i - j2) 贡献 a_i * ... * a_j1。4. 对于所有区间加和,我们采用差分数组结合树状数组对其进行维护,由于长度至多为 n ,树状数组构建的复杂度为 O(nlogn),于是,构建阶段的复杂度为 O(max(30n, nlogn))。在线单次查询的复杂度为树状数组查询的复杂度 O(logn)。
投递淘天集团等公司10个岗位 > 笔试
点赞 评论 收藏
分享
Debug_EVE:简历不要做成左右两页的,尽量做成上下一页
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务