字符串 leetcode 1624 两个相同字符之间的最长子字符串

题目内容

给你一个字符串 s,请你返回 两个相同字符之间的最长子字符串的长度 ,计算长度时不含这两个字符。如果不存在这样的子字符串,返回 -1 。

子字符串 是字符串中的一个连续字符序列。

示例 1:

输入:s = “aa”
输出:0
解释:最优的子字符串是两个 ‘a’ 之间的空子字符串。

示例 2:

输入:s = “abca”
输出:2
解释:最优的子字符串是 “bc” 。

示例 3:

输入:s = “cbzxy”
输出:-1
解释:s 中不存在出现出现两次的字符,所以返回 -1 。

示例 4:

输入:s = “cabbac”
输出:4
解释:最优的子字符串是 “abba” ,其他的非最优解包括 “bb” 和 “” 。

提示:

扫描二维码关注公众号,回复: 12343650 查看本文章
1 <= s.length <= 300
s 只含小写英文字母

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-substring-between-two-equal-characters

c语言解答

int maxLengthBetweenEqualCharacters(char * s){
    
    
    int len=strlen(s);
    int max=0;
    int i;
    char a[strlen(s)];
    for(i=0;i<len;i++){
    
    
        a[i]=s[i];
        for(int j=0;j<i;j++){
    
    
            if(s[i]==a[j]){
    
    
                if((i-j)>max)
                    max=i-j;
                break;
            }
        } 
    }
    return max-1;
}

总结:

定义数组不能用变量,比如 char a[len]就会报错,定义就初始化的好习惯一定要养成.

错误的代码,只是因为没有初始化count=0

int maxLengthBetweenEqualCharacters(char * s){
    
    
    int len=strlen(s);
    int max=0;
    int i;
    // count用来判断是否有相等的两个字符,有了count就是1,没了就是0
    int count;
    char a[strlen(s)];
    for(i=0;i<len;i++){
    
    
        a[i]=s[i];
        for(int j=0;j<i;j++){
    
    
            if(s[i]==a[j]){
    
    
                count=1;
                if((i-j)>max)
                    max=i-j-1;
                break;
            }
        } 
    }
    if(count==1)
        return max;
    return -1;
}

猜你喜欢

转载自blog.csdn.net/mogbox/article/details/113046552
今日推荐