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

来源:互联网 发布:淘宝宝贝属性怎么设置 编辑:程序博客网 时间:2024/06/05 13:06

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

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

JAVA代码如下:

import java.util.ArrayList;import java.util.Scanner;import static java.lang.System.*;import java.lang.String;public class FindSub{    public static void main(String[] args)    {        String src;        String sublable;        ArrayList<String> list=new ArrayList<String>();        out.println("Please input the source string");        Scanner input=new Scanner(System.in);        src=input.nextLine();        out.println("please input the lable of substring");        sublable=input.nextLine();        list=getSub(src, sublable);        out.println("All substring is:");        for(String s: list)        {            out.println(s);        }    }    public static ArrayList<String> getSub(String src, String sublable)    {        int flag=0;        int low=0, high=0;        char sign='\u0000';        ArrayList<String> list=new ArrayList<String>();        for (int i=0; i<src.length(); i++)        {            if (sublable.contains(src.substring(i, i+1)))            {                if (flag==0)                {                    low=i;                    high=i;                    flag=1;                    sign=src.charAt(i);                }                else                {                    if (src.charAt(i)==sign)                    {                        high=i;                    }                    else                    {                        list.add(src.substring(low, high+1));                        low=i;                        high=i;                        sign=src.charAt(i);                    }                }            }            else            {                if (flag==1)                {                    list.add(src.substring(low, high+1));                    flag=0;                }            }        }        if (flag==1)            list.add(src.substring(low, high+1));        return list;    }}


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

源字符串AaaBaa特征标记a

输出aa 1, 2

aa 5,6

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

原创粉丝点击