前言:一般题目都是秒杀的,刷起来有点费时间了,感觉要学点奇淫技巧了。哈哈哈。先记录一下,这道我觉得很“简单”的题,咋搞我心态的。
1 关于找字符串的题目

然后我目前是用c语言用的多一点,后面估计会转c++了
int minExtraChar(char * s, char ** dictionary, int dictionarySize)
{
int len = strlen(s);
int cut = 0;
int up = 0;
int value = 0;
char* find = (char*)malloc(len+1);
find[len] = '\0';
memset(find, 0 ,len);
for(int i = 0;i < dictionarySize;i++){
cut = strlen(dictionary[i]);
FLAG:
up = 0;
for(int j = 0;j < len;j++){
if(s[j] == dictionary[i][up]){
if(value){
printf("%c",s[j]);
find[j] = 1;
}
up++;
if(up == cut ){
if(!value){
value = 1;
goto FLAG;
}else{
value = 0;
break;
}
}
}
}
}
cut = 0;
for(int i = 0;i < len;i++){
if(find[i] != 1){
cut++;
}
}
return cut;
}
结果是过了402个用例

原因是dictionary中出现的子串会重复出现在s中collo我只遍历了一次。
构造起来太繁杂了,我竟然调了一个小时,我的妈呀。
以后自己看到的话,再感慨一下吧
作者分享了一道关于在C语言中寻找字符串子串的问题,原始代码效率低因为重复子串导致。通过分析,发现由于字典中重复子串的存在,代码只需要遍历一次即可。这个经历提醒作者在未来优化代码时要注意重复元素的影响。

被折叠的 条评论
为什么被折叠?



