黑马程序员技术交流社区

标题: 一道String类方法练习题 [打印本页]

作者: 以梦为马123    时间: 2015-8-24 18:26
标题: 一道String类方法练习题

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



作者: 以梦为马123    时间: 2015-8-24 18:40
本帖最后由 以梦为马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;
        }
}

作者: joeywr    时间: 2015-8-25 23:33

代码 写的好6   
                            大神 多教教。。。  
作者: a554305211    时间: 2015-8-25 23:42
不错赞一个
作者: qiaozengji668    时间: 2015-8-25 23:55
顶一下!!!
作者: 平爷    时间: 2015-8-26 00:10
赞一个  ,
作者: pengbeilin    时间: 2015-8-26 00:13
确实很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. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2