Binary String Matching时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3描述Given two strings A and B, whose alphabet consist only ‘0’ and ‘1’. Your task is only to tell how many times does A appear as a substring of B? For example, the text string B is ‘1001110110’ while the pattern string A is ‘11’, you should output 3, because the pattern A appeared at the posit 输入The first line consist only one integer N, indicates N cases follows. In each case, there are two lines, the first line gives the string A, length (A) <= 10, and the second line gives the string B, length (B) <= 1000. And it is guaranteed that B is always longer than A.输出For each case, output a single line consist a single integer, tells how many times do B appears as a substring of A.import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt();
String s1,s2;
for(int i =0;i<N;i++){
s1=input.next();
s2=input.next();
if(s1.length()>s2.length()||s1.length()>10||s2.length()>1000){
System.out.println("Wrong!");
break;
}
else
System.out.println(count(s1,s2));
}
}
public static int count(String s1,String s2){
int num=0;
for(int i= 0;i<s2.length()-1;i++){
for(int j= i+1;j<s2.length();j++){
if(s2.substring(i, j)==s1)
num++;
}
}
return num;
}
}
3 回答
已采纳
拟人
TA贡献37条经验 获得超15个赞
s2.substring(i, j)==s1,这句话有问题,.substring(start,end)表示的是开始到结束的下标位置
如果你是想比较a在b匹配的个数的的话,那么每次a的长度是不变的,可以选择.substr(start,number)
表示的是开始位置,和要截取的字符串长度
===========================================================
貌似回答的有点问题,java里没有.substr()方法,可以用.substring(start,start+number)代替
添加回答
举报
0/150
提交
取消