**在一个字符串中寻找另外一个字符串**

在一个字符串中寻找另外一个字符串

public class text{
    
    
	public static void main(String args[]) {
    
    
		String searchMe="Look for a substring in me";
		String subString="sub";
		boolean foundIt=false;
		
		int max=searchMe.length()-subString.length();
		
		test:
			for(int i=0;i<=max;i++) {
    
    
				int n=subString.length();
				int j=i;
				int k=0;
				while(n--!=0) {
    
    
					if(searchMe.charAt(j++)!=subString.charAt(k++)) {
    
    
						continue test;
					}
				}
		        foundIt=true;
		        break test;
			}
		
		System.out.println(foundIt?"Found it":"Didn't find it");
	}
	}

该段程序有点难以理解,主要就是If语句的理解,

if(searchMe.charAt(j++)!=subString.charAt(k++))

意思是,从被找的开始找到与sub 每一个字母都相似的结构,直到出现一个不一样的话,就会重新回到被找的字母遍历当中。

例如,在123subsubing中寻找subing,外层循环在按照123subsubing的循序往后推算,123直接pass,然后来到sub,在while中循环三次后,第四个字母对不上,又重新从u开始匹配。

猜你喜欢

转载自blog.csdn.net/WU_SIMON_SJTU/article/details/109370473