int minLength(char * s){
if(strlen(s) == 1){
return 1;
}
while(strstr(s, "AB") != NULL || strstr(s, "CD") != NULL){
char* ab_str = strstr(s, "AB");
if(ab_str != NULL){
int pos = ab_str-s;
int size = strlen(s+pos+2);
memmove(s+pos, s+pos+2, size);
s[pos+size] = '\0';
}
char* cd_str = strstr(s, "CD");
if(cd_str != NULL){
int pos = cd_str-s;
int size = strlen(s+pos+2);
memmove(s+pos, s+pos+2, size);
s[pos+size] = '\0';
}
}
return strlen(s);
}
代码详细解析:
1.strstr函数解析:在第一个字符串中寻找第二个字符串,如果找到则返回第一个字符串(原函数的第二个)的首字母的位置,如果没有则返回NULL
2.pos:第一个字符串中第二个字符串的首字母-第一个字符串的意思为第一个位置到开头的距离,为负数
3.size:第一个字符串中的第一个第二个字符串的末尾加上第一个字符串表示该位置到字符串最后一个位置的长度
4.memmove(目标串,拷贝串,拷贝长度(字节)),两个字符串可以重叠