LeetCode 14

14. 最长公共前缀 - 力扣(LeetCode)icon-default.png?t=M85Bhttps://leetcode.cn/problems/longest-common-prefix/


### 解题思路

java:

思路:先比较前两个字符串的公共前缀,然后将此公共前缀与第三个字符串比较,得出三个字符串的公共前缀

strs = ["flower","flow","flight"]

index = strs[0] =  flower

strs[1] = flow

strs[2] = flight

count = 3

charAt()方法:根据索引下标返回元素值

public class Test {

    public static void main(String args[]) {

        String s = "www.runoob.com";

        char result = s.charAt(6);

        System.out.println(result);

    }

}

substring()方法:获取字符串的子字符串(索引从0开始,左闭右开)

        String Str = new String("This is text");



        System.out.print("返回值 :" );

        System.out.println(Str.substring(4) );//返回值 : is text



        System.out.print("返回值 :" );

        System.out.println(Str.substring(4, 10) );//返回值 : is te


 

### 代码

```java

class Solution 

{

    public String longestCommonPrefix(String[] strs) 

    {

        if (strs == null || strs.length == 0) 

        {

            return "";

        }

        String index = strs[0];

        int count = strs.length;

        for (int i = 1; i < count; i++) 

        {

            index = iscommon(index, strs[i]);

            if (index.length() == 0) 

            {

                break;

            }

        }

        return index;

    }



    public String iscommon(String str1, String str2) 

    {

        int length = Math.min(str1.length(), str2.length());

        int j = 0;

        while (j < length && str1.charAt(j) == str2.charAt(j)) 

        {

            j++;

        }

        return str1.substring(0, j);

    }

}

```

=====================================================================================================================================

python:

1、利用python的max()和min(),在Python里字符串是可以比较的,按照ascII值排,举例abb, aba,abac,最大为abb,最小为aba。所以只需要比较最大最小的公共前缀就是整个数组的公共前缀。

(1)if not strs 表示如果字符串为空

(2)enumerate函数:

for 循环使用 enumerate

>>> seq = ['one', 'two', 'three']

>>> for i, element in enumerate(seq):

...     print i, element

...

0 one

1 two

2 three

strs = ["flower","flow","flight"]

s1 = flight

s2 = flower

i, x, s2[i]

0  f   f

1  l   l

2  i   o

3  g   w

4  h   e

5  t   r

如果输入["","b"],则输出"",所以return s1。如果for循环外边return s2则输出"b",输出错误

### 代码

```python

class Solution:

    def longestCommonPrefix(self, strs):

        if not strs: return ""

        s1 = min(strs)

        s2 = max(strs)

        for i,x in enumerate(s1):

            if x != s2[i]:

                return s2[:i]

        return s1

```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值