leetcode14-最长公共前缀

原题

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

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

示例 1:

输入: [“flower”,”flow”,”flight”] 输出: “fl”

示例 2:

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

说明:

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

解法

思想

以第一个字符串的每一个位置上的字符为基准,依次比对其余字符串对应位置上的字符,如果每个字符串对应的位置上都是这个字符,则将其append到结果上,一旦遇到一个字符不是公有的立刻将结果返回。

代码

class Solution {
    public String longestCommonPrefix(String[] strs) {
        int size = strs.length;
        if(size==0) return "";
        if(size==1) return strs[0];//一个字符串直接返回本身
        StringBuilder str = new StringBuilder();//为了避免java连接字符串的低效率使用StringBuilder
        for(int i = 0;i < strs[0].length();i++){
            char letter = strs[0].charAt(i);
            for(int j = 1;j < size;j++){
                //依次检查其余字符串各个字符是否对应第一个字符串中的字符
                //为了避免其他字符串的长度小于第一个字符串,使用try捕获异常
                try{
                    if(strs[j].charAt(i)!=letter) return str.toString();
                }catch(Exception e){ return str.toString();}
            }
            str.append(letter);
        }
        return str.toString();
    }
}

原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode14-%e6%9c%80%e9%95%bf%e5%85%ac%e5%85%b1%e5%89%8d%e7%bc%80/

(0)
彭晨涛彭晨涛管理者
上一篇 2019年11月15日
下一篇 2019年11月18日

相关推荐

  • leetcode200-岛屿数量

    原题 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水…

    算法 2019年11月24日
    0150
  • leetcode1160-拼写单词

    原题 给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字…

    算法 2020年3月17日
    0130
  • leetcode590-N叉树的后序遍历

    原题 给定一个 N 叉树,返回其节点值的后序遍历。 例如,给定一个 3叉树 : 返回其前序遍历: [5,6,3,2,4,1]. 说明: 递归法很简单,你可以使用迭代法完成此题吗? …

    2020年1月20日
    0100
  • leetcode383-赎金信

    原题 https://leetcode.cn/problems/ransom-note/ 解法 记录下字母出现次数 func canConstruct(ransomNote str…

    算法 2024年3月26日
    030
  • leetcode6-Z 字形变换

    原题 https://leetcode.cn/problems/zigzag-conversion/description 解法 遍历每行,按照对称规律都能找到下一个要遍历的下标是…

    算法 2024年3月23日
    0100
  • leetcode836-矩形重叠

    原题 矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。 如果相交的面积为正,则称两矩形重叠。需要…

    算法 2020年3月18日
    0450
  • leetcode820-单词的压缩编码

    原题 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。 例如,如果这个列表是 ["time", "me", "bell"],我们就可以将其表示为 S …

    算法 2020年3月28日
    090
  • leetcode394-字符串解码

    原题 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意…

    算法 2019年12月13日
    090
  • leetcode429-N叉树的层序遍历

    原题 给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6] ] 说明:…

    2020年1月20日
    0130
  • 拉帮结派的数据结构-并查集

    本文参考资源: 超超有爱爱-----并查集~~~chen_zan_yu的博客-CSDN博客 概述 并查集通常用作集合的合并。 并查集是一种树形结构,又叫“不相交集合”,保持了一组不…

    2020年2月17日
    0140

发表回复

登录后才能评论