摘要:字符串搜索标记可以用异或来处理。这样避免了大批字符串超时等等的可能hoj1361题,给出的是输入n个(n灰常大)字符串,然后再输入n-1个,问另外一个没输入的是什么??如果一个一个搜索去标记太麻烦了,字符串hash也过于繁琐,在这里字符串异或就起作用了把每个字符串的各个位都取异或,那么最后的结果就是没有输入的那个了1 memset(s2,'\0',sizeof(s2)); 2 while(1){3 scanf("%s",s1);4 for(int i=0;i<strlen(s1);i++)5 s2[i]^=s1[i];6 } 7 printf(&quo
阅读全文
随笔分类 - 字符串
摘要:原型:extern char *strrev(char *s); 用法:#include <string.h> 功能:把字符串s的所有字符的顺序颠倒过来(不包括空字符NULL)。 说明:返回指向颠倒顺序后的字符串指针。 函数名: strstr 功 能: 在字符串中查找指定字符串的第一次出现 用 法: char *strstr(char *str1, char *str2); strstr原型:extern char *strstr(char *haystack, char *needle); 用法:#include <string.h> 功能:从字符串haystack中
阅读全文
摘要:getchar(),可以读取空格回车在内的一个字符,常常用来处理上文输入时候缓冲区内的回车等,以确保下文可以正常接收scanf(),接收一个字符串,以空格回车作为结束标识,如果输入字符串那么回车会变成'\0'被放在字符串结尾,如果是其他类型,回车会继续停留在缓冲区等待下个变量接受gets(),接受一个长串,期中可以接受空格等,以回车符作为结束标志,但其也可以接受一个回车,产生一个空串.如果上句是scanf并且输入的是字符串,那么不会接收回车因为回车已经被上个字符串接受编程'\0',如果上句是scanf输入其他类型,那么输入结束的回车符会被接受,产生一个空串.
阅读全文
摘要:kmp算法核心是对于next数组的理解,next数组个人理解就是next[i]代表前i之前的子串中,开头的串和结尾的串能匹配的最大个数,比如给出abacaa设next[0]=-1;由题next[1]=0,求next[2]时候,就在str[2]之前的串ab里面找,看开头和结尾是否有可以匹配的,没有则=0同理next[3]在aba里找,因为ab!=ba,但是str[0]=str[2]所以next[3]=1同理下面的都可求,所以总结:next就是当前匹配失败后,模式串需要跳回的最大位置,也就是移动的最短距离...下面给出官方的解释以及代码next[] 数组的定义为(相对c++): 模式串P开头的任意
阅读全文

浙公网安备 33010602011771号