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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面是课上老师写的获取一个字符串中子串出现的次数,我觉得写的很啰嗦,大家有没有什么更好的代码,我自己也写了一个。大家可以试试。有人看的话我就把我的代码贴出来。
  1. public class StringTest2 {
  2.         public static void main(String[] args) {
  3.                 String str = "hanbasdnbafllgnbahjnbakqqqqlnbaxnbai";
  4.                 String regex = "nba";
  5.                 // 功能
  6.                 int count = getCount(str, regex);
  7.                 int count2 = getCount2(str, regex);
  8.                 System.out.println(count);
  9.         }

  10.         /*
  11.          * 返回值:统计变量的值 int 参数列表:大串和小串
  12.          */
  13.         public static int getCount(String maxString, String minString) {
  14.                 // 定义统计变量
  15.                 int count = 0;
  16.                 // 在大串中查找小串一次
  17.                 int index = maxString.indexOf(minString);
  18.                 // 如果返回值不是-1,说明小串在大串中是存在的。
  19.                 while (index != -1) {
  20.                         // 统计变量++
  21.                         count++;
  22.                         // 把查找过的数据给截取掉,重新赋值给大串
  23.                         maxString = maxString.substring(index + minString.length());
  24.                         // 在新的大串中查找一次小串
  25.                         index = maxString.indexOf(minString);
  26.                 }
  27.                 return count;
  28.         }

  29.         // 优化代码
  30.         //
  31.         public static int getCount2(String maxString, String minString) {
  32.                 // 定义统计变量
  33.                 int count = 0;
  34.                 // 在大串中查找小串一次
  35.                 int index = 0;
  36.                 // 如果返回值不是-1,说明小串在大串中是存在的。
  37.                 // 判断
  38.                 while ((index  = maxString.indexOf(minString)) != -1) {
  39.                         // 统计变量++
  40.                         count++;
  41.                         // 把查找过的数据给截取掉,重新赋值给大串
  42.                         maxString = maxString.substring(index + minString.length());
  43.                 }
  44.                 return count;
  45.         }
  46. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马