LeetCode集锦(五) - 第14题 Longest Common Prefix

栏目: 编程工具 · 发布时间: 4年前

内容简介:编写一个函数来查找字符串数组中最长的公共前缀字符串。如果没有公共前缀,返回一个空字符串“”。示例1:
Write a function to find the longest common prefix string amongst an array of strings. 

 If there is no common prefix, return an empty string "". 

 Example 1: 


Input: ["flower","flow","flight"]
Output: "fl"


 Example 2: 


Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.


 Note: 

 All given inputs are in lowercase letters a-z. 

复制代码

翻译:

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

如果没有公共前缀,返回一个空字符串“”。

示例1:

输入:[“花”、“流”、“飞行”)

输出:“fl”

示例2:

输入:“狗”,“赛车”,“车”)

输出:”“

说明:输入字符串之间没有公共前缀。

注意:

所有给定的输入都是小写字母a-z。

解题思路

本题思路很简单,我们选定一个字符串(如果是最短的就最好了),然后根据循环,来一个个对比数组里面的字符串,一个个字符判断,来获取最短路径,找到符合条件的公共字符串,在和下一个比较,最终就是结果了

解题方法

  1. 第一种解体方法,按照我们的思路来编辑,代码如下

    if (strs.length == 0) {
            return "";
        }
        if (strs.length == 1) {
            return strs[0];
        }
    
        String st = strs[0];
        StringBuilder stringBuilder = new StringBuilder("");
        for (int i = 0; i < st.length(); i++) {
            char s = st.charAt(i);
            for (int m = 1; m < strs.length; m++) {
                if (strs[m].length() <= i || strs[m].charAt(i) != s) {
                    return stringBuilder.toString();
                }
            }
            stringBuilder.append(s);
        }
        return stringBuilder.toString();
    复制代码

    时间复杂度: 该方案用了循环,循环层数为2,由于第二层判断计数不好记,设为M,外层循环为n,所以f(n)=(n*M)=Mn;所以O(f(n))=O(Mn),即T(n)=O(Mn)

    空间复杂度: 该方案没有使用额外的空间,所以空间复杂度是O(1);

总结

本题的大致解法如上所诉,本题只想到了一种方法,本来想优化查找的,使用二分法来查找,但是想到了二分法的应用场景:更多是用于定位,而不是圈定范围,所以就放弃了这个想法。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Linux程序设计

Linux程序设计

Neil Matthew、Richard Stones / 陈健、宋健建 / 人民邮电出版社 / 201005 / 99.00元

时至今日,Linux系统已经从一个个人作品发展为可以用于各种关键任务的成熟、高效和稳定的操作系统,因为具备跨平台、开源、支持众多应用软件和网络协议等优点,它得到了各大主流软硬件厂商的支持,也成为广大程序设计人员理想的开发平台。 本书是Linux程序设计领域的经典名著,以简单易懂、内容全面和示例丰富而受到广泛好评。中文版前两版出版后,在国内的Linux爱好者和程序员中也引起了强烈反响,这一热潮......一起来看看 《Linux程序设计》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试