java获取子串在整串中出现的次数

方法一:
**//这是bxdteacher的方法

package StringClass;**
   
   

/*
 * 2,一个子串在整串中出现的次数。
 * "nbaernbatynbauinbaopnba"
 * 思路:
 * 1,要找的子串是否存在,如果存在获取其出现的位置。这个可以使用indexOf完成。
 * 2,如果找到了,那么就记录出现的位置并在剩余的字符串中继续查找该子串,
 * 而剩余字符串的起始位是出现位置+子串的长度.
 * 3,以此类推,通过循环完成查找,如果找不到就是-1,并对 每次找到用计数器记录。 
 * 
 */



public class TeachingCodeStringTest_2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		String str = "nbaernbatnbaynbauinbaopnba";
		String key = "nba";
		
		int count = getKeyStringCount_2(str,key);
		System.out.println("count="+count);
				
	}

	public static int getKeyStringCount_2(String str, String key) {//方法2
		int count = 0;
		int index = 0;
		while((index = str.indexOf(key,index))!=-1){
			index = index + key.length();
			count++;
		}
		return count;
	}

	/**
	 * 获取子串在整串中出现的次数。
	 * @param str
	 * @param key
	 * @return
	 */
	public static int getKeyStringCount(String str, String key) {//方法1
		
		//1,定义计数器。 
		int count = 0;
		
		//2,定义变量记录key出现的位置。
		int index = 0;
		
		while((index = str.indexOf(key))!=-1){
			
			str = str.substring(index+key.length());
			count++;
		}
		return count;
		}
	}

方法二:

 package StringClass;**//This is my way**
        
        public class stringTest_2 {
        
        public static void main(String[] args) {
    		String arr = "nbaernbatynbauinbaopnba";// 一个子串在整串中出现的次数
    		String match = "nba";
    		System.out.println(commonSubstring(arr, match));
    	}
    	public static int commonSubstring(String arr, String match) {//my method
    		// 调用String类中String substring(int beginIndex,int endIndex)获取子串然后再匹配
    		int total = 0;
    		for (int i = 0; i < arr.length() - 2; i++) {
    			String temp = arr.substring(i, i + match.length());
    			if (temp.compareTo(match) == 0) {// 创建临时String temp与match匹配
    				total++;
    			}
    		}
    		return total;
    	}
    }

你可能感兴趣的:(字符串)