zoukankan      html  css  js  c++  java
  • 查找字符串数组中最长的公共前缀字符串

    //我的方法
    	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;
    	}
    

      

  • 相关阅读:
    SQL复制多表数据
    ie与firefox 关于js 的差别(转载)
    水晶报表函数大全【收藏】
    ArcGIS Engine对象库
    SQL Server死锁总结(转载)
    C#制作鹰眼全过程(带注释)
    大块鸭
    【经典】jQuery使用大全
    TreeView控件失效引发的思考
    根据数据集动态生成TREE
  • 原文地址:https://www.cnblogs.com/K-artorias/p/7880631.html
Copyright © 2011-2022 走看看