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日

相关推荐

  • leetcode1071-字符串的最大公因子

    原题 对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 “T 能除尽 S”。 返回最长字符串 X,要求满足 X 能除尽 …

    算法 2020年3月12日
    0240
  • leetcode86-分隔链表

    原题 给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。 你应当保留两个分区中每个节点的初始相对位置。 示例: 输入: head…

    算法 2020年4月27日
    0140
  • leetcode779-第K个语法符号

    原题 在第一行我们写上一个 0。接下来的每一行,将前一行中的0替换为01,1替换为10。 给定行数 N 和序数 K,返回第 N 行中第 K个字符。(K从1开始) 例子: 输入: N…

    算法 2020年1月22日
    0100
  • leetcode374-猜数字大小

    原题 我们正在玩一个猜数字游戏。 游戏规则如下:我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。每次你猜错了,我会告诉你这个数字是大了还是小了。你调用一个预先定义好的接…

    算法 2019年12月31日
    0370
  • leetcode82-删除排序链表中的重复元素II

    原题 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示…

    算法 2020年5月31日
    0230
  • leetcode21-合并两个有序链表

    原题 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例: 输入: 1->2->4, 1->3->4 输出: 1->1->2->3-…

    2019年12月17日
    0100
  • leetcode378-有序矩阵中第K小的元素

    原题 给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个元素。 示例: matrix = [ &nbs…

    算法 2020年2月14日
    0420
  • leetcode9-回文数

    原题 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例1: 输入: 121 输出: true 示例2: 输入: -121 输出: fa…

    算法 2020年2月28日
    0110
  • leetcode456-132模式

    原题 给定一个整数序列:a1, a2, ..., an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak &lt…

    算法 2020年1月30日
    0150
  • leetcode60-第k个排列

    原题 给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132" "21…

    算法 2020年5月16日
    0100

发表回复

登录后才能评论