java实现获取字符串strSub在父字符串strFather中出现的次数
2016-03-01 16:49
393 查看
java实现获取字符串strSub在父字符串strFather中出现的次数
java实现获取字符串strSub在父字符串strFather中出现的次数,如strFather="abeefddfadeeabfkkeeabeeabeerfab",strSub="ab",则子字符串strSub在strFather出现的次数为5.我的思路是这样的:设定一个跑标i,遍历到strFather.length()-strSub.length(),每一次的遍历,进行strFather字符串的截取,其中截取的位置为 i -> i+strSub.length()的位置,截取到的字符串strTemp跟strSub进行比较,若相等,则跑标i往后移动 strSub.length() 的位置,并让次数num 加1 。否则i 往后移动一个位置
代码如下:
/** * 获取字符串strSub在 父字符串strFather中出现的次数 * @author zhonglinsen * 2016-3-1 下午 */ public class StringSubStrExistInFatherStr { public static void main(String[] args) { String str="abeefddfadeeabfkkeeabeeabeerfab"; String str1="ab"; String str2="ee"; String str3="f"; System.out.println(getNumSubInFatherStr(str, str1)); System.out.println(getNumSubInFatherStr(str, str2)); System.out.println(getNumSubInFatherStr(str, str3)); } public static int getNumSubInFatherStr(String strFather,String strSub){ System.out.println(strFather); int num=0; int i=0; //注意这里的遍历次数: 因为当i置于strFather.length()-strSub.length()时候,如果 //String strTemp=strFather.substring(i,i+strSub.length() 得到的strTemp仍然不是所匹配的,则不需要再往下 //遍历了,因为到那个时候若是再执行 strFather.substring(i,i+strSub.length() 就会报异常:下标越界 while(i <= strFather.length()-strSub.length()){ //if (strFather.indexOf(strSub) != -1) { 这样写明显不对 //先进行字符串的截取,再进行equals()匹配,若匹配到了,则跑标往后移动strSub.length()个位置,否则移动一个位置 String strTemp=strFather.substring(i,i+strSub.length()); if (strSub.equals(strTemp)) { //如果找到了一次strSub num 就加一次 同时跑标i往后移动 strSub.length()个位置 num += 1; i += strSub.length(); }else{ //如果找不到strSub 那么num不变,而跑标i往后移动一个位置 i += 1; } } return num; } }
相关文章推荐
- java运行jar文件中某个类
- Maven仓库—Nexus环境搭建及简单介绍
- Spring AOP 动态代理
- Java开发中的23种设计模式详解(转)
- 笔试题之javaweb
- JAVA常量(字面值)表示方法
- 第一堂java课
- 使用Eclipse调试Java的十个技巧
- springMVC中上传文件
- 整理 javaweb 连接数据库方法
- spring 对于hibernate操作的封装 HibernateCallback接口的学习
- java 线程操作
- java中的final变量
- 笔试题之java基础
- java实现字符串指定的部分进行反转
- Java中的Collection和Map(四)--Set体系
- Java 依赖注入标准 JSR-330 简介
- 关于java中泛型问题
- java动态代理与AOP
- java, 字符串String,方法