黑马程序员技术交流社区

标题: 求一个子串在整串出现的次数? [打印本页]

作者: 蒲公英在飞    时间: 2014-7-19 07:15
标题: 求一个子串在整串出现的次数?
求一个子串在整串出现的次数?
作者: 李云贵    时间: 2014-7-19 08:41
public class Test2{
public static void main(String[] args){
          String a = "abcabc23423abc342334abc3453423423";
          String b = "abc";
          System.out.println(getSubNum(a, b));
         }

         public static int getSubNum(String a, String b) {
          int num = 0;
          String str = a;
          //返回子字符串b在a中第一次出现的索引,没有找到b返回-1
          int index = a.indexOf(b);
          while (index != -1) {
           num++;
           str = str.substring(index + b.length() - 1);//返回第一处索引的后面的子字符串
           index = str.indexOf(b);
          }
          return num;
         }
}
作者: 爨庚轩    时间: 2014-7-19 09:18
使用正则表达式会好一点,
  1. package copy;

  2. import java.util.regex.Matcher;
  3. import java.util.regex.Pattern;

  4. public class Demo {
  5.         public static void main(String[] args) {
  6.                 String a = "abcabc23423abc342334abc3453423423";
  7.                 String b = "abc";
  8.                 System.out.println(strCount(a, b));
  9.         }

  10.         private static int strCount(String str, String sub) {

  11.                 int num = 0;
  12.        
  13.                 //Pattern表示一个已编译的正则表达式
  14.                 //Matcher是一个靠着输入的字符串来解析这个模式和完成匹配操作的对象
  15.                 Pattern pattern = Pattern.compile(sub);
  16.                 Matcher matcher = pattern.matcher(str);
  17.                
  18.                 //是否找到与之匹配的字串
  19.                 while(matcher.find()){
  20.                         num++;
  21.                 }
  22.                
  23.                 return num;

  24.         }

  25. }
复制代码

作者: wisely    时间: 2014-7-19 11:11
我也来凑凑热闹
  1. public class Sunday{
  2.         public static void main(String[] args){
  3.                 String str="ttabcttabcttabctt";
  4.                 String subStr="tt";
  5.                 System.out.println("子串在整串中出现的次数:"+gettimes(str,subStr));
  6.         }
  7.         public static int gettimes(String str,String subStr){
  8.                 int count=0;
  9.                 int index=0;
  10.                 while((index=str.indexOf(subStr,index))!=-1){
  11.                         index=index+subStr.length();
  12.                         count++;
  13.                 }
  14.                 return count;
  15.         }
  16. }
复制代码

这个问题在毕老师的视频第13天-08中详细讲解过。

作者: 人心如水    时间: 2014-7-19 13:11
package day_7_19;
//求一个子串在整串出现的次数?
public class SubStringDemo {

        public static void main(String[] args) {
                String str = "abcddbcksaddwaddaddaddddsdasdaddavavaaaddaaaaddsvdd";
                String str2 = "dd";
                getNum(str,str2);
        }

        private static void getNum(String str, String str2) {
                int count=0;
                int len = str2.length();
                int n =0;
                int i=0;
                while(i<str.length()-len){
                         i= str.indexOf(str2, n);
                        n=i+len;
                        count++;
                       
                /*        int i=str.indexOf(str2, 0);
                        int j =str.indexOf(str2, i+len);
                        int m = str.indexOf(str2, j+len);*/
                }
                System.out.println(count);
        }
}




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