- package com.vincent.day_12;
- /*
- * 2015年7月18日17:53:34
- * 此类的功能是:在一个长字符串中查找一个子串出现的次数?
- *
- */
- public class SubStringCount {
- public static void main(String[] args) {
- String s = "foanangjoiajnananjoinananjgnananoi";
- String sub = "nan";
- SubStringCount ssc = new SubStringCount();
- int indexCount = ssc.CountSubstring(s, sub);
- System.out.println(indexCount);
- }
- public int CountSubstring(String s, String sub) {
- int count = 0;
- int index = 0;//记录每次查找到的第一个子串的索引值
- for (int i = 0; i <= (s.length() - (s.length() % sub.length())); i++) {//i <= (s.length() - (s.length() % sub.length()))这个是判断每一次的父串是否小于子串;
- s = s.substring(i);//每次找到子串后,切割父串中子串 “索引值+1”(这个“+1”动作在for循环中完成的) 的前面部分,而生成一个新的父串
- if ((index = s.indexOf(sub)) != -1) {
- count++;
- i = index;
- } else{
- return count;// 不存在子串
- }
- }
- return count;
- }
- }
复制代码
如果有更好的算法,望大家不吝分享。。。有修改建议的也望踊跃提出。。。。{:3_53:} |
|