猿辅导笔试9.12第三题

哪里有问题,我是百思不得其解啊,为何0%,测试用例全过,我自己写的例子也全过
求大佬告知错在何处
T = int(input())
def func(s):
    s1,s2,s3,K = s.strip().split()
    K = int(K)
    count=0
    while(s3):
        i=0
        if s1 and s1[0]==s3[0]:
            count+=1
            while(s1 and s1[0]==s3[0]):
                s1 = s1[1:]
                s3 = s3[1:]
        elif s2 and s2[0]==s3[0]:
            count+=1
            while(s2 and s2[0]==s3[0]):
                s2 = s2[1:]
                s3 = s3[1:]
        else:
            return 0
    if count<=K:
        return 1
    return 0
result = []
for i in range(T):
    s = input()
    result.append(func(s))
for j in result:
    print(j)


#猿辅导##笔试题目#
全部评论
我也是
点赞 回复 分享
发布于 2020-09-12 20:51
    private static boolean valid(String s1, String s2, String s3, int K, int i1, int i2) {         if (i1 + i2 >= s3.length())             return true;         if (K == 0)             return false;         String sub1 = s1.substring(i1);         String sub2 = s2.substring(i2);         String sub3 = s3.substring(i1 + i2);         int i = 0;         while (i < sub1.length() && i < sub3.length() && sub1.charAt(i) == sub3.charAt(i)) i++;         int j = 0;         while (j < sub2.length() && j < sub3.length() && sub2.charAt(j) == sub3.charAt(j)) j++;         if (i == 0 && j == 0)             return false;         else if (i == 0)             return valid(s1, s2, s3, K - 1, i1, i2 + j);         else if (j == 0)             return valid(s1, s2, s3, K - 1, i1 + i, i2);         else             return valid(s1, s2, s3, K - 1, i1 + i, i2) || valid(s1, s2, s3, K - 1, i1, i2 + j);     } 不知道这样对不对
点赞 回复 分享
发布于 2020-09-12 20:55
我也是0😫
点赞 回复 分享
发布于 2020-09-12 20:56
你试一试长一点的字符串,会发现贪心只关注局部最优,而不是全局最优哦。可以试一试DP~
点赞 回复 分享
发布于 2020-09-12 22:23

相关推荐

12-07 21:21
东北大学 Java
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务