zoukankan      html  css  js  c++  java
  • 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;
    	}
    }
    
  • 相关阅读:
    hdu 1588 求f(b) +f(k+b) +f(2k+b) +f((n-1)k +b) 之和 (矩阵快速幂)
    poj 3233 S = A + A^2 + A^3 + … + A^k A是一个n X n矩阵 (矩阵快速幂)
    hdu 1757 和1005差不多 (矩阵快速幂)
    D 矩阵快速幂
    poj 3734 方块涂色 求红色 绿色方块都为偶数的方案数 (矩阵快速幂)
    hdu 1005 根据递推公式构造矩阵 ( 矩阵快速幂)
    hdu 4549 M斐波拉契 (矩阵快速幂 + 费马小定理)
    UVa 1643 Angle and Squares (计算几何)
    UVa 11040 Add bricks in the wall (水题递推)
    UVa 1336 Fixing the Great Wall (区间DP)
  • 原文地址:https://www.cnblogs.com/SteadyJack/p/5231574.html
Copyright © 2011-2022 走看看