ACM第五题,字符串匹配,返回子字符串个数

不是柯西 发布于 2014/08/08 11:17
阅读 234
收藏 0
ACM第五题.输入两组字符串,给出子字符串的个数。如11,1001110110 返回3。各位看看这个方法逻辑上有什么错误,有没有特殊字符没有考虑到的。在ACM在线系统里提示WrongAnswer

import java.util.Scanner;


public class Main{
public static void main(String[]args){
Scanner sc= new Scanner(System.in);
int total=sc.nextInt();
String []str=new String[2*total];
char[][] ch=new char[2*total][];
int[] match=new int[total];
for(int i=0;i<2*total;i++){
str[i]=sc.next();
ch[i]=str[i].toCharArray();
}
for(int i=0;i<2*total;i=i+2){
match[i/2]=match(ch[i],ch[i+1]);
}
for(int i=0;i<total;i++)
System.out.println(match[i]);
}


private static int match(char[] subChar, char[] ch) {
int subCl =subChar.length;
int cl =ch.length;
if(subCl>cl) return 0;
int count=0;
int i = 0,j=0;
while(i<=subCl&&j<=cl){
if(i==subCl){
count++;
i=0;
j=j-subCl+1;
}
if(j<cl&&(subChar[i]-ch[j]==0)){
i++;
j++;
}else {
if(i==0){
j++;
}
i=0;
}

}

return count;
}
}
加载中
返回顶部
顶部