Longest Common Prefix_LeetCode

Longest Common Prefix_LeetCode1.思路:求strs数组的长度,当len==0,len==1分开考虑;i从1-min_len,以strs[0][i]作为对照,一旦出现strs[j][i]!=strs[0][i],结束循环,则输出之前判断好了的字符串。 classSolution:deflongestCommonPrefix(self,strs):""":typestrs…

大家好,又见面了,我是你们的朋友全栈君。

1.思路:求strs数组的长度,当len==0,len==1分开考虑;i从1-min_len,以strs[0][i]作为对照,一旦出现strs[j][i]!=strs[0][i],结束循环,则输出之前判断好了的字符串。 

class Solution:
    def longestCommonPrefix(self, strs):
        """
        :type strs: List[str]
        :rtype: str
        """
        #判断list长度
        len_strs=len(strs)
        if len_strs==1:
            return strs[0]
        if len_strs==0:
            return ""
        min_len=self.min_length_strs(strs)
        result=""
        for i in range(min_len):
            temp=strs[0][i]
            for j in range(1,len_strs):
                if temp!=strs[j][i]:
                    return result
            result = result + temp
        return result

    def min_length_strs(self,strs):
        min_len = 999999
        for i in range(len(strs)):
            if len(strs[i])<min_len:
                min_len=len(strs[i])
        return min_len

2.查看了一下网上的资料,觉得不错

https://www.jianshu.com/p/63dcc0d7db75 提到横向遍历,纵向遍历,分治法和二分法的思想。

public String longestCommonPrefix(String[] strs) {
    if (strs.length == 0) return "";
    String prefix = strs[0];
    for (int i = 1; i < strs.length; i++)
        while (strs[i].indexOf(prefix) != 0) {
            prefix = prefix.substring(0, prefix.length() - 1);
            if (prefix.isEmpty()) return "";
        }        
    return prefix;
}

int indexOf(String str): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。

在理解这个的时候查阅了strs[i].indexOf(prefix)!=0,java中的indexOf(str)要么返回-1,要么返回对应的下标值。这里判断是否等于0,等于0,则prefix应该是一个字符,可以直接去判断下一个元素的以一个字符是不是与前面的相同。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138501.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 什么是平均数,中位数,众数,方差_平均数标准差

    什么是平均数,中位数,众数,方差_平均数标准差Python代码实现第一步:添加数据到列表defnum(a):iffloat(a)==int(a):returnint(a)else:returnfloat(a)#添加数据li=[]print(&amp;amp;quot;请逐条添加数据!(若退出请输入0000)&amp;amp;quot;)whileTrue:print(&amp;amp;quot;请输入:&amp;amp;q

    2022年9月17日
    3
  • http://95u.free.fr/index.php,Electronic Software Distribution Service

    http://95u.free.fr/index.php,Electronic Software Distribution ServiceContent-Type:multipart/related;start=;boundary=———-OH5LlQ9dynBJGqR8E2AiMRContent-Location:https://software.pitt.edu/software/software.aspSubject:=?utf-8?Q?Electronic=20Software=20Distributi…

    2022年7月24日
    11
  • 基于单片机超声波测距系统的设计_单片机类毕业设计

    基于单片机超声波测距系统的设计_单片机类毕业设计Hi,大家好,这里是丹成学长,今天向大家介绍一个超级炫酷的单片机项目,非常适合用于毕设基于单片机的超声波雷达设计大家可用于课程设计或毕业设计1、绘制雷达表盘2、增加扫描线3、实现拖影效果4、实现目标扫描点显示(渐出效果)1、准备器材(arduinoUNO、360度舵机、超声波传感器、扩展板)2、雷达平台1、串口通讯接受数据2、扫描点的显示函数改造超声波检测原理线电波(微波)从雷达发射到自由空间,其中一些波被反射物体拦截,并从不同的方向上进行反射。这些波中一些波会引回雷达,被雷达接受并且

    2025年11月1日
    2
  • MFC的图片按钮

    MFC的图片按钮

    2021年8月31日
    49
  • Memwatch使用说明

    Memwatch使用说明linux下的测试工具真是少之又少,还不好用,最近试用了memwatch,感觉网上的介绍不太好,所以放在这里跟大家分享 。其实大部分都是看的帮助,很多地方翻译得不好还有错,请原谅指出最好看原文。如果转载或引用,请注明我的博客地址,谢谢。 1介绍MemWatch由 Johan Lindh 编写,是一个开放源代码 C 语言内存错误检测工具。MemWatch支持 ANSI C,它提供结果日志纪录

    2022年7月13日
    20
  • 大数据挖掘技术在电网状态监测与诊断中的应用

    大数据挖掘技术在电网状态监测与诊断中的应用

    2021年11月22日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号