14. 最长公共前缀 - 力扣(LeetCode)https://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
```