前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读

[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读

作者头像
人不走空
发布2024-02-22 10:43:58
1550
发布2024-02-22 10:43:58
举报
文章被收录于专栏:学习与分享

题目

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

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

示例

示例1
代码语言:javascript
复制
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例2
代码语言:javascript
复制
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示 :

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

👉️ 力扣原文

代码语言:javascript
复制
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;
           for(;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;
       }     
}

详细解读

这段代码实现了一个寻找字符串数组中最长公共前缀的算法。下面是这个算法的解读:

  1. **初始化最长公共前缀:**首先,将最长公共前缀初始化为第一个字符串strs[0]
  2. **遍历字符串数组:**从第二个字符串开始遍历数组。
  3. **比较字符:**对于当前的字符串strs[i],从第一个字符开始,与最长公共前缀ans逐个字符比较。
  4. **截取最长公共前缀:**如果在某一位置发现字符不匹配,则将最长公共前缀ans截取到不匹配位置,保留前面匹配的部分。
  5. **更新最长公共前缀:**将截取后的最长公共前缀ans更新为当前的最长公共前缀。
  6. **重复步骤3-5:**继续遍历字符串数组中的下一个字符串,重复比较和更新步骤,直到遍历完所有字符串或者发现最长公共前缀为空字符串。
  7. **返回结果:**返回最终得到的最长公共前缀ans

该算法的时间复杂度为O(n*m),其中n是字符串数组的长度,m是最长公共前缀的长度。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 示例
    • 示例1
      • 示例2
      • 提示 :
      • 详细解读
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档