当前位置: 代码迷 >> 综合 >> 胖虎算法初练八之——最长公共前缀
  详细解决方案

胖虎算法初练八之——最长公共前缀

热度:62   发布时间:2024-01-29 13:26:57.0

最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 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;}
}

 

  相关解决方案