编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
解题思路:将第一个字符串设定为最长公共前缀,遍历数组,逐渐缩小最长公共前缀的大小直到找到最长公共前缀;
学到:
indexOf:返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
java:
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0)
{
return "";
}else if(strs.length == 1)
{
return strs[0];
}
String pre = strs[0];
int i = 0;
while(i< strs.length){
while (strs[i].indexOf(pre) != 0){
//indexOf:返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1
//pre不是strs[i]的前缀,就缩小pre的范围
pre = pre.substring(0,pre.length()-1); //注意这个位置
}
i++;
}
return pre;
}
}