Longest Common Prefix之Java实现

一、题目

Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string "".
Example 1:
 Input: ["flower","flow","flight"]
 Output: "fl"
Example 2:
 Input: ["dog","racecar","car"]
 Output: ""
 Explanation: There is no common prefix among the input strings.
Note:All given inputs are in lowercase letters a-z.

二、解题思路

1、获取数组的第一个元素firstStr作为比较的对象;
2、以firstStr的长度作为条件设定while循环;
3、从数组第二个元素开始遍历数组,判断每个元素是否已firstStr作为前缀;
4、如果不是,则截掉firstStr最后一个字符,再重新遍历数组进行比较。

三、代码实现

public String longestCommonPrefix(String[] strs) {
    if (strs.length == 0) { // 当数组长度为0时,返回空
        return "";
    } else if (strs.length == 1) {  // 当数组只有一个元素时,则返回该元素
        return strs[0];
    } else {
        String firstStr = strs[0];
        while (firstStr.length() != 0) {
            for (int i = 1; i < strs.length; i++) {
                if (strs[i].startsWith(firstStr)) {
                    if (i == strs.length -1) {
                        return firstStr;
                    }
                    continue;
                } else {
                    // 从后往前一个一个截取
                    firstStr = firstStr.substring(0, firstStr.length() - 1);
                    break;
                }
            }
        }
    }
    return "";
}

原文地址:https://blog.51cto.com/13666674/2400445

时间: 2024-10-08 21:14:08

Longest Common Prefix之Java实现的相关文章

Longest Common Prefix leetcode java

题目: Write a function to find the longest common prefix string amongst an array of strings. 题解: 解题思路是,先对整个String数组预处理一下,求一个最小长度(最长前缀肯定不能大于最小长度). 然后以第0个字符串作为参照,从第1个字符串到最后一个字符串,对同一位置做判断,有不同字符串返回当前记录的字符串就行. 我的代码如下,不是那么简洁好看,下面有个整理的更好一些: 1     private stat

leetcode longest common prefix(easy) /java

题: 遍历比较. 一本正经地说一下思路. 最长前缀. 一旦找到一个不匹配,就无法做成最长前缀. 所有我们的目的就是去找这个不匹配. 注意一下字符串为空的情况,每次都会栽在这里. 为了提高效率,找出最短字符串,因为最长前缀的长度不可能超过最短字符串的长度. import java.io.*; import java.util.*; public class Solution { public static String longestCommonPrefix(String[] strs) { St

LeetCode 14 Longest Common Prefix (C,C++,Java,Python)

Problem: Write a function to find the longest common prefix string amongst an array of strings. Solution: 时间复杂度O(n) 题目大意: 给一个字符串数组,要找到这些字符串的最大前缀公共子串. 解题思路: 既然是公共子串,那每个字符串肯定都包含有,并且在头部,首先把第一个字符串作为默认最大,然后依次与后边每一个字符串对比,计算所有的最大匹配长度,长度最小的就是 Java源代码(用时263ms

Java [leetcode 14] Longest Common Prefix

小二好久没有更新博客了,真是罪过,最近在看linux的东西导致进度耽搁了,所以今晚睡觉前怒刷一题! 问题描述: Write a function to find the longest common prefix string amongst an array of strings. 解题思路: 该问题就是找到所有数组字符串里面的最长相同前字串.所以我的思路是先找到数组中最短的那个字符串,然后每次比较的时候最多循环该长度就行,这样避免字符串下标溢出的问题.设置StringBuilder对象用于存

[LeetCode][Java] Longest Common Prefix

题目: Write a function to find the longest common prefix string amongst an array of strings. 题意: 写出一个函数.找到一组数组中的最长公共子串. 算法分析: 须要构建两重循环.第一层是最短子串的长度,还有一层是遍历字符串数组中的每一个成员. brute force的想法,以第一个字符串为标准.对于每一个字符串从第一个字符開始,看看是不是和标准一致,假设不同,则跳出循环返回当前结果.否则继续下一个字符. AC

[LeetCode][14]Longest Common Prefix解析 两种算法和底层源码的深入对比-Java实现

Q: Write a function to find the longest common prefix string amongst an array of strings. A: 这题的大概意思就是说给你一组字符串找出其中最长的哪个通用的前缀出来.这个东西不难找,但是如何找的又快又好不简单.其实这题本来就是easy题,但是却让我联想到了<数据结构与算法分析>上的一道题目,那道题目是这样的: 给一个8900个字的字典,从中间找出类似abc.bbc.abb这样单词中只有一个字母不同的单词进行

LeetCode第[14]题(Java): Longest Common Prefix

题目:最长公共前缀 难度:EASY 题目内容: Write a function to find the longest common prefix string amongst an array of strings. If there is no common prefix, return an empty string "". 翻译:编写一个函数,在字符串数组中查找最长公共前缀字符串. 如果没有公共前缀,则返回空字符串. Example 1: Input: ["flow

LeetCode: Longest Common Prefix 解题报告

Longest Common Prefix Total Accepted: 24665 Total Submissions: 92370 My Submissions Question Solution Write a function to find the longest common prefix string amongst an array of strings. Show Tags Have you met this question in a real interview? Yes

【Leetcode】Longest Common Prefix

题目链接:https://leetcode.com/problems/longest-common-prefix/ 题目: Write a function to find the longest common prefix string amongst an array of strings. 算法: [java] view plain copy public String longestCommonPrefix(String[] strs) { if (strs.length == 0) {