private static int findMaxRepeatedValueOfSuffixStr(String searchingStr, int startIndex){
		if (null==searchingStr||searchingStr.isEmpty()){
			throw new IllegalArgumentException("the arg:suffixStr can not be null or empty");
		}

		if (startIndex<0 ||startIndex>searchingStr.length()){
			throw new IllegalArgumentException("the arg:startIndex is illegal");
		}

		int maxVal=0;

		int l=searchingStr.length()-startIndex;
		int[] prefixArr=new int[l];
		int k;

		prefixArr[0]=0;

		//the charAt(index) the index is relative to searchingStr
		for (int i=1;i<l;i++){
			k=prefixArr[i-1];
			while (searchingStr.charAt(startIndex+i)!=searchingStr.charAt(startIndex+k) && k!=0){
				k=k-1;
			}

			if (searchingStr.charAt(startIndex+i)==searchingStr.charAt(startIndex+k)){
				prefixArr[i]=k+1;
			}else {
				prefixArr[i]=0;
			}

			if (maxVal<prefixArr[i])
				maxVal=prefixArr[i];
		}

		return maxVal;
	}