• 3.最长公共前缀


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

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

    示例 1:

    输入:strs = ["flower","flow","flight"]
    输出:"fl"
    示例 2:

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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/longest-common-prefix
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题思路:

    这题自己采用的笨方法,浪费了不少时间。

    主要是好多异常场景没有考虑全,导致有些特殊场景会执行失败。。。

    比如:列表中存在空字符串、列表长度为1,列表中的字符串长度不一致等等

    这里采用了一个flag作为跳出while循环的标识。

    循环内的情况为:

    第11行单独处理长度为1的列表;

    第13行读取列表中第i个字符串的每个字符;

    第14行要求列表中第i个字符串和第i+1个字符串长度都要大于比较序号,否则就会出现out of range的错误;

    第15行判断上面两个字符串中的前n个字符是否相等,相等就继续比较,不相等就跳出循环;

    最后返回任意一个字符串中的前n个字符。OK

     1 class Solution(object):
     2     def longestCommonPrefix(self, strs):
     3         """
     4         :type strs: List[str]
     5         :rtype: str
     6         """
     7         strs_len = len(strs)
     8         n = 0
     9         flag = 1
    10         while flag:
    11             if strs_len == 1:                               #当列表长度为1时,需单独处理
    12                 return strs[0]
    13             for i in range(strs_len-1):
    14                 if len(strs[i]) >n and len(strs[i+1]) >n:   #当前和下一个字符串长度都要大于比较序号
    15                     if strs[i][n] == strs[i+1][n]:
    16                         continue
    17                     else:
    18                         flag = 0
    19                 else:
    20                     flag = 0
    21             n += 1
    22         return strs[0][0:n-1]
    最懒的人就是整天忙得没时间学习、反思、成长的人。
  • 相关阅读:
    show variables like "sql_mode"; set sql_mode=''; set sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';
    c#单元测试
    React HookApi
    React Navigation验证流程
    React Native 错误笔记
    React Navigation 5.x BottomTab 使用
    React Navigation 5.x 使用
    虹软人脸识别SDK接入Milvus实现海量人脸快速检索
    iOS逆向:越狱手机抹除数据、还原,cydia出错(2021.04.21 完结)
    C#教程1:类型和变量
  • 原文地址:https://www.cnblogs.com/jockeyhao/p/15789162.html
Copyright © 2020-2023  润新知