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)

官方题解

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

leecode刷题(19)-- 最长公共前缀的更多相关文章

  1. C#LeetCode刷题之#14-最长公共前缀​​​​​​​(Longest Common Prefix)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3921 访问. 编写一个函数来查找字符串数组中的最长公共前缀. 如 ...

  2. LeetCode第14题:最长公共前缀

    题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...

  3. leecode第十四题(最长公共前缀)

    class Solution { public: string longestCommonPrefix(vector<string>& strs) { string res=&qu ...

  4. Leecode刷题之旅-C语言/python-14.最长公共前缀

    /* * @lc app=leetcode.cn id=14 lang=c * * [14] 最长公共前缀 * * https://leetcode-cn.com/problems/longest-c ...

  5. #leetcode刷题之路14-最长公共前缀

    编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...

  6. LeetCode刷题-最长公共前缀(简单)

    题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...

  7. 好像leeceode题目我的博客太长了,需要重新建立一个. leecode刷题第二个

    376. Wiggle Subsequence               自己没想出来,看了别人的分析. 主要是要分析出升序降序只跟临近的2个决定.虽然直觉上不是这样. 455. 分发饼干     ...

  8. [LeeCode]14. 最长公共前缀

    题目链接:https://leetcode-cn.com/problems/longest-common-prefix/ 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀 ...

  9. Leetcode题库——14.最长公共前缀

    @author: ZZQ @software: PyCharm @file: longestCommonPrefix.py @time: 2018/9/16 17:50 要求:查找字符串数组中的最长公 ...

随机推荐

  1. 对List集合进行排序

    一.说明 使用Collections工具类的sort方法对list进行排序 新建比较器Comparator 二.代码 排序: import java.util.ArrayList; import ja ...

  2. 生产者消费者模式做一个golang的定时器

    在主程序启动的时候开一个goroutine作为消费者,用管道连接生产者和消费者,消费者处于无限循环,从管道中获取channel传过来定时event 注意:channel在消费者创建的时候就连通生产者和 ...

  3. linux之badblocks命令

    简介 该命令用来检测硬盘坏道.硬盘坏道问题,如忽视,会随着使用而扩大面积,严重损坏硬盘.一般采用检测坏道,进而屏蔽重分区的方式复用硬盘. 语法 badblock(选项)(参数) -b<区块大小& ...

  4. Python_07-常用函数

    1     python常用常用函数 1.1      常用内置函数 1.2      类型转换函数 1.3      和操作系统相关的调用 1.3.1       操作举例 1.4      用os ...

  5. C# Action

    Action<T> Delegate Encapsulates a method that has a single parameter and does not return a val ...

  6. leetcode 20 Valid Parentheses 有效的括号

    描述: 给定一些列括号,判断其有效性,即左括号有对应的有括号,括号种类只为小,中,大括号. 解决: 用栈. bool isValid(string s) { stack<char> st; ...

  7. Ubuntu开机自动挂载分区

    虽然我基本上都是使用Linux的,但是仍然有些时候需要切换到Windows(双系统),如果所有的分区都使用ext4等Linux分区格式,则在Windows下访问十分不方便. 因此,我一般会将一些两个系 ...

  8. Set List Map

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  9. m2e 插件

    官网 http://www.eclipse.org/m2e/ 在线安装地址 http://download.eclipse.org/technology/m2e/releases 插件简介 Launc ...

  10. (转)【经验之谈】Git使用之TortoiseGit配置VS详解

    原文地址:http://www.cnblogs.com/xishuai/p/3590705.html 前言 上一篇<[经验之谈]Git使用之Windows环境下配置>: 安装 配置和使用 ...