首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leecode刷题(19)-- 最长公共前缀

leecode刷题(19)-- 最长公共前缀

作者头像
希希里之海
发布2019-03-06 12:35:07
3940
发布2019-03-06 12:35:07
举报
文章被收录于专栏:weixuqin 的专栏weixuqin 的专栏

leecode刷题(19)-- 最长公共前缀

最长公共前缀

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

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

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z


思路:

这道题我用的是暴力破解的方法,遍历字符串数组,依次比较每个字符,如果都相等,则长度加一再比较,如果不相等,则返回之前的字符。

代码如下:

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length == 0)   return "";
        StringBuilder res = new StringBuilder();
        for (int i = 0; i < strs[0].length(); i++) {
            int j = 1;
            for (; j < strs.length; j++) {
                if (strs[j].length() <= i || strs[0].charAt(i) != strs[j].charAt(i)) {
                    return res.toString();
                }
            }
            if (j == strs.length) {
                res.append(strs[0].charAt(i));
            }
        }
        return res.toString();
    }
}

几个知识点

1. StringBuilder :

String 类是字符串常量,是不可更改的常量。而 StringBuffer 是字符串变量,它的对象是可以扩充和修改的。 所以我们在这里使用 StringBuffer 可以避免每次添加字符时都要 new 一个新对象。

2. 字符串数组中字符的定位:

字符串数组即形如这样的数组:String[] res = {"abc", "def", "ghi"} 。 比如我们找 "abc" 这个字符串,可以直接写:res[0],但是如果我们要找 "abc" 中的 a,那我们应该怎样写呢? 如果写成 res[0][0] ,在 C++ 中是没有问题的,但是在 java 中会报错:array required, but String found。 我们在 java 中应该写成:res[0].charAt(0)

官方题解

官方有更好的方法,看了确实很好,帮助很大,这道题的解题思路不唯一:官方题解

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • leecode刷题(19)-- 最长公共前缀
    • 最长公共前缀
      • 几个知识点
        • 官方题解
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档