leetcode_最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。

示例 1:
输入: [“flower”,”flow”,”flight”]
输出: “fl”

示例 2:
输入: [“dog”,”racecar”,”car”]
输出: “”
解释: 输入不存在公共前缀。

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution{
public String maxCommon(String[] s){
if ( s.length == 0 ){
return "";
}
String len = s[0];
for ( int i = 1; i < s.length; i++){
while( s[i].indexOf(len) != 0 ){
len = len.substring(0, len.length() - 1);
if(len.isEmpty()){
return "";
}
}
}
return len;
}
}

先看看是不是空的

如果s根本就没有任何数据,那还判断毛线?直接返回个空字符串就行了呗;

找一个串当基础

反正是找公共前缀,那么这个公共前缀一定存在于每个串中。那么我就拿第一个字符串s[0]当一个基础,声明一个字符串len,等于s[0];

循环判断

从第二个字符串开始,进行判断。利用indesOf()方法,看看len是不是在s[i]字符串中并且是不是从0下标开始的。

  • 如果是,终止while循环
  • 如果不是,那就让len减去最后一个字符,继续循环。
    • 如果一直循环到len人家一点不剩了,s[i]里面还是没有跟它一致的,那凉了,这几个字符串没有公共前缀。返回空字符串。

      一直循环下去

      最后返回len就可以了。
-------------本文结束感谢您的阅读-------------