自然语言 伪代码

来源:百度知道 编辑:UC知道 时间:2024/05/26 01:55:28
蛮力字符串匹配
// 该算法实现了蛮力字符串的匹配
//输入:一个n个字符的数组P[O.......n-1]代表一个模式
一个m个字符的数组T[0......m-1]代表一段文本
//输出:如果查找成功的话,返回文本的第一个匹配字符串的第一个字符的
//位置,否则返回-1.
for i<-0 to n-m do
j<-0
while j<m and P[j]=T[i+j] do
j<-j+1
if i=m return i
return -1
帮个忙把这个翻译成伪代码。c或c++都行。
再解释解释为什么要返回-1呢?
先谢谢了啊。

C/C++的伪代码如下:
for(int i = 0; i < n - m; i++) {
j = 0;
while(j < m && P[j] == T[i + j]) {
j++;
}
if(j == m) {
return i;
}
}
return -1;
其中,你原来那个代码里面倒数第二样的if i = m return i的判断是错的,应该是判断j=m。 因为如果在T里面匹配上P的话,返回的是首次匹配的首字母的下标对吧?这个下标i的取值范围满足 0<=i<m对吧?因为m是非负整数,所以i的值就有可能取任何非负整数了。所以当在代码里面没有找到相关匹配的时候,返回-1是比较合适的。大家都知道-1绝对不可能是一个数组里面的某一位的下标的,对吧?当然在很多其它函数的实现上,也有返回其它值作为匹配失败的标志的,只是-1用的比较多一些而已。