zoukankan      html  css  js  c++  java
  • 一个小题目的三种不同的解法

      有一道很经典的Java题目,虽然很简单,但是可以开发出很多种不同的解法,这是我在今天重新复习了正则的时候,忽然回想起来的.题目的名字是:"查找一个小串在大串中出现的次数."有三种思路,第一种,利用substring,通过寻找小串出现的位置,改变大串从小串出现的位置处重新寻找小串的位置,以此类推.第二种解法,直接用小串分割大串,分割出的字符串数组长度-1即是小串出现的次数,但是这时要考虑一种特殊情况,即小串出现在末尾处.这时候字符串数组的长度就是小串出现的次数.第三种利用正则表达式中Pattern和Matcher类,进行对于小串的匹配,每匹配一次,将计数器的数值加1.下面是这三种方法的代码:

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    //在大串中寻找小串出现的次数..
    public class Demo2 {
        public static void main(String[] args) {
            String str="abc123abc123abadasdabc";
            String st="abc";
            getCount(str,st);
        }
        /*通过split函数.*/
        /*
        private static void getCount(String str, String st) {
            int count=0;
            if(!str.contains(str)) {
                System.out.println(str+" 不包含 "+st);
                return;
            }
            if(str.equals(st)) {
                System.out.println("个数为:"+1);
                return;
            }
            String [] sts=str.split(st);
            count=sts.length;
            if(str.endsWith(st)) {
                count++;
            }
            System.out.println("个数为:"+(count-1));
        }
        */
        /*通过substring*/
        /*private static void getCount(String str, String st) {
            int count=0;
            int pos=0;
            if(!str.contains(st)) {
                System.out.println(str+" 不包含 "+st);
                return;
            }
            while(str.contains(st)) {
                count++;
                pos=str.indexOf(st);
                str=str.substring(pos+st.length(), str.length());
            }
            System.out.println(count);
        }*/
    /*
     *     通过正则表达式的匹配功能
     * */
        private static void getCount(String str, String st) {
            int count=0;
            String regex=st;
            Pattern p=Pattern.compile(regex);
            Matcher m=p.matcher(str);
            while(m.find()) /*find将从str开头开始寻找与regex匹配的字串,利用循环,不断寻找,直到找不到为止*/{
                count++;
            }
            System.out.println(count);
        }
    }

     

  • 相关阅读:
    Oracle适配问题解决
    Oracle12C创建视图权限不足
    Oracle12C配置对外访问
    Oracle12C创建scott账户
    Oracle12C安装配置文档
    Redis适配采坑记
    Redis安装问题解决方案
    Redis Linux 安装部署
    【计网 第四章-2】
    【信息论编码2】测度论
  • 原文地址:https://www.cnblogs.com/hlhdidi/p/5611926.html
Copyright © 2011-2022 走看看