A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 以梦为马123 中级黑马   /  2015-8-24 18:26  /  459 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


* 获取一个字符串中指定子串出的次数。比如说“hanbasdnbafllgnbahjnbakqqqqlnbaxi” 在这个字符串中,多有个nba?


6 个回复

倒序浏览
本帖最后由 以梦为马123 于 2015-8-24 18:41 编辑

public class StringTest2 {
        public static void main(String[] args) {
                String str = "hanbasdnbafllgnbahjnbakqqqqlnbaxnbai";
                String regex = "nba";
                // 功能
                int count = getCount(str, regex);
                int count2 = getCount2(str, regex);
                System.out.println(count);
        }

        /*
         * 返回值:统计变量的值 int 参数列表:大串和小串
         */
        public static int getCount(String maxString, String minString) {
                // 定义统计变量
                int count = 0;
                // 在大串中查找小串一次
                int index = maxString.indexOf(minString);
                // 如果返回值不是-1,说明小串在大串中是存在的。
                while (index != -1) {
                        // 统计变量++
                        count++;
                        // 把查找过的数据给截取掉,重新赋值给大串
                        maxString = maxString.substring(index + minString.length());
                        // 在新的大串中查找一次小串
                        index = maxString.indexOf(minString);
                }
                return count;
        }

        // 优化代码
        //
        public static int getCount2(String maxString, String minString) {
                // 定义统计变量
                int count = 0;
                // 在大串中查找小串一次
                int index = 0;
                // 如果返回值不是-1,说明小串在大串中是存在的。
                // 判断
                while ((index  = maxString.indexOf(minString)) != -1) {
                        // 统计变量++
                        count++;
                        // 把查找过的数据给截取掉,重新赋值给大串
                        maxString = maxString.substring(index + minString.length());
                }
                return count;
        }
}
回复 使用道具 举报

代码 写的好6   
                            大神 多教教。。。  
回复 使用道具 举报
不错赞一个
回复 使用道具 举报
顶一下!!!
回复 使用道具 举报
赞一个  ,
回复 使用道具 举报
确实很6666
我有另外一种方法也可以求出字符串中nba的子串个数
思路:用String中的replace方法把 "nab" 都替换成 "&"符号~
        然后把字符串变成字符数组,遍历字符数组中的"&"符号个数 就是“nba”的个数
  1. public class text02 {

  2.         /**
  3.          * @param args
  4.          */
  5.         public static void main(String[] args) {
  6.                 // TODO Auto-generated method stub
  7.                 //hanbasdnbafllgnbahjnbakqqqqlnbaxi
  8.                 String s = "hanbasdnbafllgnbahjnbakqqqqlnbaxi";
  9.                 s = s.replace("nba", "&");
  10.                 System.out.println(s);
  11.                 char[]ch = s.toCharArray();
  12.                 int count=0;
  13.                 for(char c:ch){
  14.                         if(c=='&')
  15.                         count++;
  16.                 }
  17.                 System.out.println(count);
  18.         }

  19. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马