主題の内容
これが文字列sです。2つの同一の文字の間の最長の部分文字列の長さを返します。これらの2つの文字は、長さの計算には含まれません。そのような部分文字列がない場合は、-1を返します。
部分文字列は、文字列内の文字の連続シーケンスです。
例1:
入力:s = "aa"
出力:0
説明:最適な部分文字列は、2つの「a」の間の空の部分文字列です。
例2:
入力:s = "abca"
出力:2
説明:最適な部分文字列は "bc"です。
例3:
入力:s = "cbzxy"
出力:-1
説明:sに2回現れる文字がないため、-1が返されます。
例4:
入力:s = "cabbac"
出力:4
説明:最適な部分文字列は "abba"であり、他の非最適なソリューションには "bb"と ""が含まれます。
促す:
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;
}