鱼C论坛

 找回密码
 立即注册
查看: 865|回复: 4

无重复字符的最长子串

[复制链接]
发表于 2021-12-2 13:07:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 三刀流.索隆 于 2021-12-2 13:11 编辑

leetcode的题目,不知道哪里有问题,抱错也看不懂


int lengthOfLongestSubstring(char * s){
        int i = 0,j = 0,count = 0,temp = 0;
        
        for (i = 0;s[i] != '\0';++i)
        {
                for (j = i + 1;s[j] != s[i];++j)
                        temp++;
                
                count = temp > count ? temp:count;
        }
        
        return count;
}


链接放不起,就直接打出来了:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-2 15:32:54 | 显示全部楼层
本帖最后由 jackz007 于 2021-12-5 14:44 编辑
#include <stdio.h>

int foo(char s[])
{
        int a , b , c , d[50][2] , i , j , k                                            ;
        for(i = k = 0 ; i < 50 ; i ++) for(j = 0 ; j < 2 ; j ++) d[i][j] = 0            ;
        if(s[0]) {
                for(c = 0 , i = 0 ; s[i] ; i ++) {
                        for(j = i + 1 ; s[j] && s[j] != s[i] ; j ++)                    ;
                        for(a = i ; a < j - 1 ;) {
                                for(b = a + 1 ; b < j && s[b] != s[a] ; b ++)           ;
                                if(b < j) break                                         ;
                                else a ++                                               ;
                        }
                        if(a == j - 1) {
                                d[c][0] = i                                             ;
                                d[c][1] = j - i                                         ;
                                c ++                                                    ;
                                i = j - 1                                               ;
                        }
                }
                for(k = 0 , i = 1 ; i < c ; i ++) if(d[i][1] > d[k][1]) k = i           ;
/*
                for(i = 0 ; i < c ; i ++) {
                        if(d[i][1] == d[k][1]) {
                                for(j = 0 ; j < d[i][1] ; j ++) putchar(s[d[i][0] + j]) ;
                                putchar('\n')                                           ;
                        }
                }
*/
        }
        return d[k][1]                                                                  ;
}

int main(void)
{
        char s[256]                                                                     ;
        gets(s)                                                                         ;
        printf("%d\n" , foo(s))                                                         ;
}
        编译、运行实况
D:\0002.Exercise\C>g++ -o x x.c

D:\0002.Exercise\C>x
bbbbbb
1

D:\0002.Exercise\C>x
pwwkew
3

D:\0002.Exercise\C>x
abcabcbb
3

D:\0002.Exercise\C>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-5 13:16:32 | 显示全部楼层
bool ifOk(int i,int j,char *s);

int lengthOfLongestSubstring(char * s){
    if (NULL == s)
        return 0;

        int i = 0,j = 0,count = 0,temp = 1;
        
        for (i = 0;s[i] != '\0';++i)
        {
            for (j = i+1;s[j] != '\0' && s[j] != s[i];++j)
            {
                if (ifOk(i,j,s) == 1)
                    temp++;
            }
            count = temp > count ? temp:count;
            temp = 1;
        }
        //for ()
       
        return count;
}

bool ifOk(int i,int j,char *s)
{
    int a = i,b = i+1;
    if (j-i < 2)
        return 1;
    else
    {
        for (;b <= j;++b)
        {
            for (a = i;a != b;++a)
            {
                if (s[a] != s[b])
                    continue;
                else
                {
                    return 0;
                    break;
                }
            }
        }
    }

    return 1;
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-5 13:21:59 | 显示全部楼层

如果输入s为""的话,你的代码有bug
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-5 14:45:53 | 显示全部楼层
三刀流.索隆 发表于 2021-12-5 13:21
如果输入s为""的话,你的代码有bug

         你提醒的很对,我的代码确实忽略了空串,2 楼的代码已经修正,欢迎再测。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-18 03:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表