Binary String Matching時間限制:??3000??ms ?|? 內(nèi)存限制:??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條經(jīng)驗 獲得超15個贊
s2.substring(i,?j)==s1,這句話有問題,.substring(start,end)表示的是開始到結束的下標位置
如果你是想比較a在b匹配的個數(shù)的的話,那么每次a的長度是不變的,可以選擇.substr(start,number)
表示的是開始位置,和要截取的字符串長度
===========================================================
貌似回答的有點問題,java里沒有.substr()方法,可以用.substring(start,start+number)代替

添加回答
舉報
0/150
提交
取消