查找字符串数组中最长的公共前缀字符串

//我的方法
	public String longestCommonPrefix(String[] strs) {
		//如果字符串数组长度是0,则返回“”,如果数组长度是1,那么直接返回这一条String
        if(strs.length==0){
            return "";
        }else if(strs.length==1){
            return strs[0];
        }
        String s = "";
        //比较strs[0]的从第0位开始,每次取出一个字符比较,若数组中所有这个位的字符都相等,则加入公共字符串s,进行下个循环
        for(int i=0; i<strs[0].length(); i++){
            for(int j=1; j<strs.length; j++){
            	//如果遍历指针到达某个元素元素末尾或者某个元素该位匹配不想等,则返回s
                if((i>=strs[j].length()) || (strs[0].charAt(i) != strs[j].charAt(i)))
                    return s;
            }
            s = s+strs[0].charAt(i);
        }
        return s;
    }
	
	//leetcode的方法
	public String longestCommonPrefix1(String[] strs) {
	    if(strs == null || strs.length == 0)    return "";
	    String pre = strs[0];
	    int i = 1;
	    while(i < strs.length){
	    	//拿第一个做模板,匹配到数组中第一个元素的最长公共前缀字符串,然后以这个为模板,以此类推匹配下边所有的元素,最后返回最终模板
	    	//indexOf是检测子串并返回子串起始位置的函数
	        while(strs[i].indexOf(pre) != 0)
	        	//如果pre不是子串,就去掉pre末尾一位重新比较,直到是子串或者pre长度0时就会跳出本次循环去匹配下一轮外循环
	            pre = pre.substring(0,pre.length()-1);
	        i++;
	    }
	    return pre;
	}

  

posted @ 2017-11-22 18:17  K_artorias  阅读(4846)  评论(0编辑  收藏  举报