题目
下面为朴素的模式匹配算法,请在算法的括号处填上正确的子句。 int index(String *s,String *t) ( i=j=0; while((i[s-]len)&&(j[t-]len)) if(s->ch[i]==t->ch[j]){ i=i+1; j=j+1; )else( i=( ); j=( ); ) if( j==t->len) return(i - t->len); else return(-1); }[/i]
下面为朴素的模式匹配算法,请在算法的括号处填上正确的子句。 int index(String *s,String *t) { i=j=0; while((i[s-]len)&&(j[t-]len)) if(s->ch[i]==t->ch[j]){ i=i+1; j=j+1; }else{ i=( ); j=( ); } if( j==t->len) return(i - t->len); else return(-1); }[/i]
题目解答
答案
i-j+1#0
解析
步骤 1:理解朴素的模式匹配算法
朴素的模式匹配算法是一种简单的字符串匹配算法,它通过逐个字符比较主串和模式串来寻找模式串在主串中的位置。当匹配失败时,需要回溯主串和模式串的指针,重新开始比较。
步骤 2:确定回溯规则
当模式串和主串的当前字符不匹配时,需要回溯主串和模式串的指针。主串的指针需要回溯到上一次匹配开始的位置,而模式串的指针需要回溯到模式串的起始位置。
步骤 3:填写正确的子句
根据朴素的模式匹配算法的回溯规则,当模式串和主串的当前字符不匹配时,主串的指针需要回溯到上一次匹配开始的位置,即 i = i - j + 1;模式串的指针需要回溯到模式串的起始位置,即 j = 0。
朴素的模式匹配算法是一种简单的字符串匹配算法,它通过逐个字符比较主串和模式串来寻找模式串在主串中的位置。当匹配失败时,需要回溯主串和模式串的指针,重新开始比较。
步骤 2:确定回溯规则
当模式串和主串的当前字符不匹配时,需要回溯主串和模式串的指针。主串的指针需要回溯到上一次匹配开始的位置,而模式串的指针需要回溯到模式串的起始位置。
步骤 3:填写正确的子句
根据朴素的模式匹配算法的回溯规则,当模式串和主串的当前字符不匹配时,主串的指针需要回溯到上一次匹配开始的位置,即 i = i - j + 1;模式串的指针需要回溯到模式串的起始位置,即 j = 0。