JAVA新手牛刀小试之提取相同字符组成的子串

2018-06-18 03:22:03来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

给定一个字符串和子串特征标记,要求从源字符串中提取特征标记代表的所有子串,如:

给定源字符串:AaaBbb,和子串特征标记ab,要求提取出符合特征标记的所有相同字符组成的子串aa和bb

JAVA代码如下:

 1 import java.util.ArrayList;
 2 import java.util.Scanner;
 3 
 4 import static java.lang.System.*;
 5 import java.lang.String;
 6 public class FindSub
 7 {
 8     public static void main(String[] args)
 9     {
10         String src;
11         String sublable;
12         ArrayList<String> list=new ArrayList<String>();
13 
14         out.println("Please input the source string");
15         Scanner input=new Scanner(System.in);
16         src=input.nextLine();
17 
18         out.println("please input the lable of substring");
19         sublable=input.nextLine();
20 
21         list=getSub(src, sublable);
22 
23         out.println("All substring is:");
24         for(String s: list)
25         {
26             out.println(s);
27         }
28     }
29 
30     public static ArrayList<String> getSub(String src, String sublable)
31     {
32         int flag=0;
33         int low=0, high=0;
34         char sign='\u0000';
35 
36         ArrayList<String> list=new ArrayList<String>();
37 
38         for (int i=0; i<src.length(); i++)
39         {
40             if (sublable.contains(src.substring(i, i+1)))
41             {
42                 if (flag==0)
43                 {
44                     low=i;
45                     high=i;
46                     flag=1;
47                     sign=src.charAt(i);
48                 }
49                 else
50                 {
51                     if (src.charAt(i)==sign)
52                     {
53                         high=i;
54                     }
55                     else
56                     {
57                         list.add(src.substring(low, high+1));
58                         low=i;
59                         high=i;
60                         sign=src.charAt(i);
61                     }
62                 }
63             }
64             else
65             {
66                 if (flag==1)
67                 {
68                     list.add(src.substring(low, high+1));
69                     flag=0;
70                 }
71             }
72         }
73         if (flag==1)
74             list.add(src.substring(low, high+1));
75 
76         return list;
77     }
78 }

运行结果

该程序可以改进,在输出提取出的子串的同时打印子串在源字符串中的起止标号,这样可以区分相同特征标记的不同子串,如:

源字符串AaaBaa特征标记a

输出aa 1, 2

aa 5,6

懒得改了,有兴趣可以自己尝试

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:jsp&amp;servlet——session监听

下一篇:巨人大哥谈数据库设计技巧