Fork me on GitHub

NYOJ之Binary String Matching

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.

样例输入:
3
11
1001110110
101
110010010010001
1010
110100010101011

样例输出:
3
0
3

--------------------------------------------------------------------



AC代码:

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4 
 5     public static void main(String[] args) {
 6         
 7         Scanner sc=new Scanner(System.in);
 8         int n=Integer.parseInt(sc.nextLine());
 9         
10         while(n-->0){
11             String a=sc.nextLine();
12             String b=sc.nextLine();
13             int ans=solve(a,b);
14             System.out.println(ans);
15         }
16         
17     }
18     
19     public static int solve(String a,String b){
20         int res=0;
21         for(int i=0;i<b.length();i++){
22             int j=0;
23             for(j=0;j<a.length();j++){
24                 if((i+j>=b.length()) || (a.charAt(j)!=b.charAt(i+j))) break;
25             }
26             if(j==a.length()) res++;
27         }
28         return res;
29     }
30     
31 }
32 
33 
34 
35 另一种AC思路:(利用了内建的方法,不重复造轮子)
36 
37 import java.util.Scanner;
38 
39 public class Main {
40     
41     public static void main(String[] args) {
42         
43         Scanner sc=new Scanner(System.in);
44         int n=Integer.parseInt(sc.nextLine());
45         
46         while(n-->0){
47             String a=sc.nextLine();
48             String b=sc.nextLine();
49             int ans=solve(a,b);
50             System.out.println(ans);
51         }
52         
53     }
54     
55     
56     public static int solve(String a,String b){
57         int res=0;
58         while(a.length()<=b.length()){
59             if(b.indexOf(a)==0) res++;
60             b=b.substring(1,b.length());
61         }
62         return res;
63     }
64     
65 }

 

 


题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=5

 

posted @ 2016-08-18 21:12  CC11001100  阅读(187)  评论(0编辑  收藏  举报