LeetCode 7最长公共前缀

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

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

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

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

说明:

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

思路:

要求最长的公共前缀,就是求字符串数组所有字符串前面相同的部分。

创建一个新函数来比较两个字符串前面相同的长度。

通过比较字符串0和剩余字符串的公共前缀,选出最小的长度即为最长公共前缀。

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs.length==0)return "";
        if (strs.length==1)return strs[0];
        int sameCharNum=0;
        Set<Integer> set=new HashSet<>();
        for (int i = 1; i < strs.length; i++) {
            sameCharNum = longestNum(strs[0], strs[i]);
            set.add(sameCharNum);
        }
        int minNum=Integer.MAX_VALUE;
        for (int i:set){
            if(minNum>i){
                minNum=i;
            }
        }
        return strs[0].substring(0,minNum);
    }

    public int longestNum(String s1,String s2){
        int sameCharNum=0;
        for (int i = 0; i<s1.length()&&i<s2.length(); i++) {
            if (s1.charAt(i)==s2.charAt(i)) {
                sameCharNum++;
            }else
                return sameCharNum;
        }
        return sameCharNum;
    }
}

原文地址:https://www.cnblogs.com/TeFuir/p/9445840.html

时间: 2024-08-01 18:39:40

LeetCode 7最长公共前缀的相关文章

LeetCode:最长公共前缀【14】

LeetCode:最长公共前缀[14] 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存

LeetCode 14. 最长公共前缀(Longest Common Prefix)

14. 最长公共前缀 14. Longest Common Prefix 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". LeetCode14. Longest Common Prefix 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racec

leetcode 13.最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 1 class Solution: 2 def longestCommonPrefix(self, strs): 3 """ 4 :type strs: List[str] 5 :rtype: str 6 """ 7 if len(strs) == 0: 8 return "" 9 if len(strs) == 1:

python(leetcode)-14最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow","flight"] 输出: "fl" 示例 2: 输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀. 说明: 所有输入只包含小写字母 a-

[leetcode 14] 最长公共前缀

写一个函数可以查找字符串中的最长公共字符. 示例: 输入:["flower","flow","flight"] 输出:"fl" 输入:["dog","racecar","car"] 输出:" " (不存在公共的字符串) 代码: class Solution: def longestCommonPrefix(self,strs): "&qu

leetcode——Longest Common Prefix 最长公共前缀(AC)

Write a function to find the longest common prefix string amongst an array of strings. 其实做起来会感觉很简单,需要注意的是要考虑效率的问题,毕竟可能是很长的字符串数组,所以可以考虑选取所有字符串中最短的那个来首先进行比较,因为最长公共子串肯定不会大于其长度,这样避免了字符串之间长度差异很大造成的效率损失,然后每次比较之后最长公共子串的长度也永远不会大于最短的那个字符串,只会不变或减小,只要遍历字符串数组,挨个

# Leetcode 14:Longest Common Prefix 最长公共前缀

公众号:爱写bug 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"

[转][LeetCode]Longest Common Prefix ——求字符串的最长公共前缀

题记: 这道题不难但是很有意思,有两种解题思路,可以说一种是横向扫描,一种是纵向扫描. 横向扫描:遍历所有字符串,每次跟当前得出的最长公共前缀串进行对比,不断修正,最后得出最长公共前缀串. 纵向扫描:对所有串,从字符串第0位开始比较,全部相等则继续比较第1,2...n位,直到发生不全部相等的情况,则得出最长公共前缀串. 横向扫描算法实现: //LeetCode_Longest Common Prefix //Written by zhou //2013.11.22 class Solution

LeetCode Longest Common Prefix 最长公共前缀

题意:给多个字符串,返回这些字符串的最长公共前缀. 思路:直接逐个统计同一个位置上的字符有多少种,如果只有1种,那么就是该位是相同的,进入下一位比较.否则终止比较,返回前缀.可能有一个字符串会比较短,所以前缀最长也只是最短字符串的长度. 1 class Solution { 2 public: 3 string longestCommonPrefix(vector<string>& strs) { 4 string ans=""; 5 if(strs.empty()