爆笑!山东吃妇科药的刘常山, 参加选秀抓狂表演! (转载)# Joke - 肚皮舞运动
x*0
1 楼
Given a string, find the longest substring that contains at most 2 distinct
characters.
e.g. “ababcbcbaaabbdef”
baaabb (6) ← Find this one!
bcbcb (5)
Alg:
1) scan , if find a distinct char, I
void find_longest_sub_string( char arr[ ], char result[ ] ){
int length_different_char = 0;
int max_len_substring = 0;
int current_len_substring = 0;
int i ;
int j ;
for ( i = 0 , j = 0 ; arr[i] != ‘\0’; i++, j++){
strcpy( &arr[i], &result[j] );
if( is_occured_before( result) != 0 ){
result[j+1] = arr[i+1];
length_different_char++;
current_len_substring++;
}
else{
result[j+1] = arr[i+1];
current_len_substring++;
}
if( length_different_char ==3 ){
current_len_substring-- ;
length_different_char = 0;
}
if( max_len_substring < current_len_substring){
max_len_substring = current_len_string;
current_len_substring = 0;
j = 0;
}
characters.
e.g. “ababcbcbaaabbdef”
baaabb (6) ← Find this one!
bcbcb (5)
Alg:
1) scan , if find a distinct char, I
void find_longest_sub_string( char arr[ ], char result[ ] ){
int length_different_char = 0;
int max_len_substring = 0;
int current_len_substring = 0;
int i ;
int j ;
for ( i = 0 , j = 0 ; arr[i] != ‘\0’; i++, j++){
strcpy( &arr[i], &result[j] );
if( is_occured_before( result) != 0 ){
result[j+1] = arr[i+1];
length_different_char++;
current_len_substring++;
}
else{
result[j+1] = arr[i+1];
current_len_substring++;
}
if( length_different_char ==3 ){
current_len_substring-- ;
length_different_char = 0;
}
if( max_len_substring < current_len_substring){
max_len_substring = current_len_string;
current_len_substring = 0;
j = 0;
}