zoukankan      html  css  js  c++  java
  • 获取一个字符串在另一个字符串中出现的次数

    • 思路:比较数组和被比较数组各设立一个循环,比较数组作为内循环,用比较数组的首字符进行判断,true:开始遍历判断两字符串的对应位,false:外层循环递进,开始下一次判断
    • 注意点:
      • 单个字符和多个字符情况;
      • 相同的匹配字符重匹配情况;如"11"匹配数组内容"111111",正确应该只有三次

    获取一个字符串在另一个字符串中出现的次数。 比如:获取“ ab”在 “abkkcadkabkebfkabkskab” 中出现的次数

        public int getCount(String mianStr,Strin subStr){
        
            String str1 = "aa";
            String str2 = "aabjkdaaaaafjksdabkjdfsdabj";
            //将字符串转换成字符数组
            char[] ch1 = str1.toCharArray();
            char[] ch2 = str2.toCharArray();
    
            int len1 = str1.length();
            int len2 = str2.length();
            int count = 0;//记录出现次数
            boolean loopFlag = true;//设置一个标识,用于判断是否找到匹配字符的开关
            for(int i = 0;i < len2;i++){
                //用比较数组的首元素进行匹配,一旦匹配到相同的字符,开始后继的检测
                if(ch1[0] == ch2[i]){
                    for(int j = 0,k = i;j < len1;j++,k++){
                        if(ch1[j] == ch2[k]){
                            //比较完最后一个字符元素且相同,计次器+1
                            if(j == len1-1){
                                count++;
                                i += len1 -1;//用于跳过已在匹配的子字符串范围内的长度,-1是为了抵消循环的递增
                                loopFlag = false;
                            }
                        }
                        else
                            break;//一旦发现对应位数不相等,退出检测
                    }
                }
            }
            if(loopFlag){
                System.out.println("没有匹配的字符串!");
            }
            else {
                System.out.println("匹配的字符串出现次数有:"+count+"次");
            }
        }
    

    调用String方法的方式

        public int getCount(String mainStr,String subStr){
            int mainLength = mainStr.length();
            int subLength = subStr.length();
            int count = 0;//记录出现次数
            int index = 0;
            if(mainLength >= subLength){
    //            方式一:
    //            while((index = mianStr.indexOf(subStr)) != -1 ) {//获取字符串subStr首次出现在mainStr的脚标
    //                count++;
    //                mianStr = mianStr.substring(index + subLength);//获取未比较的部分,赋值给被比较数组
    //            }
    //            方式二:改进效率
                while((index = mainStr.indexOf(subStr,index)) != -1 ){
                    count++;
                    index += subLength;
                }
                return count;
            }
            return 0;
        }
    
  • 相关阅读:
    vb动态创建控件
    100多个很有用的JavaScript函数以及基础写法汇总
    CodeFile与CodeBehind的区别
    asp.net防sql注入问题
    .NET创建目录和文件
    Asp.Net判断字符是否是数字
    Asp.Net随机中文汉字验证码
    禁用表单自动提示complete
    如何隐藏vs2005的起始页
    Asp.Net enableEventValidation
  • 原文地址:https://www.cnblogs.com/csyh/p/12272671.html
Copyright © 2011-2022 走看看