最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
思路:
如果字符串数组的长度为零,则直接返回"";
先将第一个字符串规定为最长公共前缀,然后遍历比较字符串数组,当数组元素出现与第一个字符串不同时,更新最长公共前缀(截断第一个字符串到不相等的位置),继续遍历下一个字符串,继续更新最长公共前缀。
如果遇到空字符串,直接返回"".
画图理解
| flower |
flow |
flight |
| strs[0] |
str[1] |
str[2] |
| ans=f"lower" |
ans="fl" |
ans="fl" |
| helloworld |
hello |
heloveme |
| strs[0] |
str[1] |
str[2] |
| ans="helloworld" |
ans="hello" |
ans="he" |
代码如下
class Solution {public String longestCommonPrefix(String[] strs) {if (strs.length == 0) {return "";}String ans = strs[0];// 先将第一个字符串规定为最长公共前缀for (int i = 1; i < strs.length; i++) {int j = 0; // 必须声明jfor (; j < ans.length() && j < strs[i].length(); j++) {if (ans.charAt(j) != strs[i].charAt(j)) {break;}}ans = ans.substring(0, j);if (ans.equals("")) {return ans;}}return ans;}
}