讨论/题目交流/🏆 第 182 场力扣周赛/
🏆 第 182 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛

image.png

3 分 - 找出数组中的幸运数
4 分 - 统计作战单位数
5 分 - 设计地铁系统
8 分 - 找到所有好字符串

展开讨论
力扣 (LeetCode)发起于 2020-03-29

求大佬们帮我这个小菜鸟看看吧,第一次参加碰到了一个奇怪的问题。

第四题,用C写的,自己在平台和自己的编译环境测试多个案例没发现问题.但提交答案时卡在 8,"leetcode","leetgoes","leet"这个案例。 在平台自侧和自己的编译环境都是0,但提交上去就显示我的答案为51。

思路是先用judge()判断,s1里面是否包含子串evil
然后使用next(),实现字符串的自增,比如执行一次,ay变为az,再执行一次az变为ba

然后循环一直判断,直到s1大于s2字符串

char* next(int n,char * s1)         //字符串自增,比如aa变为ab
{
    int i;
    s1[n-1]++;
    for(i=n-1;i>0;i--)
    {
        if(s1[i]>'z')
        {
            s1[i] ='a';
            s1[i-1] += 1;
        }
        else
        {
            break;
        }
    }
    return s1;
}
long sum=0;
//int count=0;         //count在sum每次到100w时,加1  count为100时   到达10E 为10^9
void judge(char * s1, char * evil)      //判断字符串,如果包含evil,   sum++
{
    if(strstr(s1,evil)==NULL)
    {
        sum++;
        if(sum>=1000000007)
        {
            sum=0;
            //count++;    
        }
        //if(count==100&&sum==7){count=0;sum=0;}    
    }   
}

int findGoodStrings(int n, char * s1, char * s2, char * evil){
    
    while(strcmp(s1,s2)<=0)                 // 字符串相等
    {
        judge(s1,evil);                     //比较字符串是否含有evil
        //printf("%s  %d\n",s1,sum);
        s1 = next(n,s1);                    //下一个字符串  
    }
    return (int)sum;
}
展开全部 31 讨论