长期更新,对使用 Java 刷 LeetCode 过程中一些有趣的题的感想和启发。 解题源代码仓库

题目

题目链接

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

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

示例 1:

输入: [“flower”,”flow”,”flight”] 输出: “fl” 示例 2:

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

所有输入只包含小写字母 a-z 。

我的思路

思路如下:

  1. 循环次数 = 最小的那个字符串的长度。
  2. 如果一个 char 相同,则将其加入字符串 output

我的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//解决方法
class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length == 0) return "";
        String output = "";
        char temp;
        Boolean isForehead = true;
        //i是要循环几次前缀
        for (int i = 0;i < findMinLength(strs);i++){
            temp = strs[0].charAt(i);
            //j是要循环对比几个数
            for (int j = 1;j < strs.length;j++){
                if (temp != strs[j].charAt(i)){
                    isForehead = false;
                }
            }
            if (isForehead) {
                output = output + temp;
            }else return output;
        }
        return output;
    }
    
    public int findMinLength(String[] strs){
        int length = strs.length;
        int minLength = strs[0].length();
        for (int i = 1;i < length;i++){
            if (strs[i].length() < minLength){
                minLength = strs[i].length();
            }
        }
        return minLength;
    }
}


发现存在错别字或者事实错误?请麻烦您点击 这里 汇报。谢谢您!