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. Python基础语法习题二

    习题: 1.请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li=['alex', 'eric', 'rain'] 2.查找列表中元素,移除每个元素的空格,并查找以a或A开头并且以c结尾的所有 ...

  2. css常用属性初总结:伪元素和伪元素

    前面几遍中我们分别说到了id选择器和class选择器,以及它们的区别和联系,下面大家一起来探究一下神奇的为类和伪元素吧. 其实以前我对伪类和伪元素也是搞得稀里糊涂的,现在决定剥开它神秘的外衣,首先,究 ...

  3. 未能加载文件或程序集"xxxxxx"或它的某一个依赖项

    错误:未能加载文件或程序集“xxx”或它的某一个依赖项.试图加载格式不正确的程序. 原因分析:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题. 解决方案:IIS——应 ...

  4. Java 设计模式系列(二)简单工厂模式和工厂方法模式

    Java 设计模式系列(二)简单工厂模式和工厂方法模式 实现了创建者和调用者的分离.分为:简单工厂模式.工厂方法模式.抽象工厂模式 简单工厂模式.工厂方法模式都很简单,就不详细介绍了. 一.简单工厂 ...

  5. Access denied for user 'root'@'MiWiFi-Ryyy-srv' (using password: YES)

    虽然是跟很多人一样的问题但是原因不同,其他很多文章说是授权问题,也确实是授权问题,但是,配置文件写的是连接localhost,而这里不知道什么原因切换了使用的用户,变成了默认访问MiWiFi-Ryyy ...

  6. Redis数据结构(四)

    存储list: list存储方式采用头和尾插入的方式,这样效率快,如果没有这个插入的数据,redis自己会创建这个数据,如果是中间插入的话,采用list方式效率就会很慢. ArrayList使用数组方 ...

  7. PHP(四)表单的基本处理

  8. swift学习之-- UIAlertVIewController - uiactionsheet

    // //  ViewController.swift //  actionsheet // //  Created by su on 15/12/7. //  Copyright © 2015年 t ...

  9. 20155334 2016-2017-2 《Java程序设计》第六周学习总结

    20155334 2016-2017-2 <Java程序设计>第六周学习总结 教材学习内容总结 第十章:输入/输出 InputStream与OutputStream java将输入/输出抽 ...

  10. ZOJ3703 Happy Programming Contest 2017-04-06 23:33 61人阅读 评论(0) 收藏

    Happy Programming Contest Time Limit: 2 Seconds      Memory Limit: 65536 KB In Zhejiang University P ...