MeiZhongHao 2015-01-23 14:15 采纳率: 0%
浏览 1590

是循环条件写错了么?一直报异常

public class next {
public void getnext(char s[],int next[])
{
int j=0;
int k=-1;
next[0]=-1;
while(s[j]!='\0')
{
if(k==-1)
{
next[++j]=0;
k=0;
}
else if(s[j]==s[k])
{
k++;
next[++j]=k;
}
else
{
k=next[k];
}
}
}

}

public class kmp {
public int kmp(char t[],char s[])
{
int i=0,j=0;
int []nex=new int[80];
next n=new next();
n.getnext(s,nex);
while(t[i]!='\0'&&s[j]!='\0')
{
if(t[i]==s[j])
{
i++;
j++;
}
else
{
j=nex[j];
if(j==-1)
{
i++;
j++;

            }
        }
    }
    if(s[j]=='\0')
    {
        return(i-s.length+1);
    }
    else
    {
        return 0;
    }
}

public static void main(String[] args) {
    // TODO Auto-generated method stub

    char []t={'q','w','e','r','s','a','a'};
    char []s={'s','a'};
    kmp k=new kmp();
    System.out.print(k.kmp(t, s));
}

}

  • 写回答

8条回答 默认 最新

  • threenewbee 2015-01-23 14:22
    关注

    public void getnext(char s[],int next[])
    应该是
    public void getnext(char[] s,int[] next)
    吧,你用的看上去是Java,可是怎么混杂着C++的语法。

    评论

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题