LeetCode刷题练习- 最长公共前缀(14)

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 1:

输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”

示例 2:

输入:strs = [“dog”,“racecar”,“car”]
输出:""
解释:输入不存在公共前缀。

提示:

0 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成

解法一:

public String longestCommonPrefix(String[] strs) {
       if(strs.length == 0){
           return "";
       }
       String first = strs[0];
       char[] chars = first.toCharArray();
       String prefix = "";
       for(int i = 0; i <chars.length;i++){
           for(int j = 1 ; j < strs.length;j++){
               if(!strs[j].startsWith(prefix + chars[i])){
                   return prefix;
               }
           }
           prefix += chars[i];
       }
       return prefix;
   }

解法二:

public String longestCommonPrefix(String[] strs) {
		if(strs.length == 0){
			return "";
		}
		if(strs.length == 1){
			return strs[0];
		}
		String first = strs[0];
		while(first.length()!=0){
			for(int j = 1 ; j < strs.length;j++){
				if(!strs[j].startsWith(first)){
					//存在不符合的就截掉最后一位
					first = first.substring(0,first.length()-1);
					break;
				}
				if (j == strs.length-1){
					return first;
				}
			}
		}
		return first;
    }
上一篇:Effective Java笔记


下一篇:[LeetCode] 1961. Check If String Is a Prefix of Array