LeetCode第14题 最长公共前缀

/*

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

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

["flower","flow","flight"]  */
思路1:时间复杂度为O(n*m),遍历数组 ,相同元素放入Stringbuilder中.  
 1 class Solution14 {
 2
 3   public String longestCommonPrefix(String[] strs) {
 4     if (strs.length == 1) {
 5       return strs[0];
 6     }
 7     if (strs.length == 0) {
 8       return "";
 9     }
10     int strCount = strs.length;
11     int minLength = Integer.MAX_VALUE;
12
13     for (String str : strs) {
14       minLength = Math.min(minLength, str.length());
15     }
16
17     StringBuilder commonPreStr = new StringBuilder();
18
19     boolean charIsEqual = true;
20     A:
21     for (int j = 0; j < minLength; j++) {
22       for (int i = 1; i < strCount; i++) {
23         charIsEqual = (strs[i].charAt(j) == strs[i - 1].charAt(j));
24         if (!charIsEqual) {
25           break A;
26         }
27       }
28       commonPreStr.append(strs[0].charAt(j));
29     }
30     return commonPreStr.toString();
31   }
32 }
思路2: 将第一个字符串视为母串,与剩下的串进行匹配,如果不匹配(即index返回-1或不为0的情况,不为0说明不是前缀),母串长度-1,直到匹配或母串长度为0为止.
 1 class Solution14 {
 2
 3   public String longestCommonPrefix(String[] strs) {
 4     if (strs == null || strs.length == 0) {
 5       return "";
 6     }
 7     String result = strs[0];
 8     for (int i = 1; i < strs.length; i++) {
 9       while (strs[i].indexOf(result) != 0) {
10         result = result.substring(0, result.length() - 1);
11       }
12     }
13     return result;
14   }
15 }


原文地址:https://www.cnblogs.com/rainbow-/p/10260525.html

时间: 2024-08-30 13:23:35

LeetCode第14题 最长公共前缀的相关文章

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

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

【leetcode 简单】第五题 最长公共前缀

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

LeetCode刷题-最长公共前缀(简单)

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

LeetCode Longest Common Prefix 最长公共前缀

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

算法题---最长公共前缀

题目来源:https://leetcode-cn.com/problems/longest-common-prefix/ 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow","flight"]输出: "fl"示例 2: 输入: ["dog","racecar","ca

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

Write a function to find the longest common prefix string amongst an array of strings. class Solution: # @return a string #最长公共前缀 def longestCommonPrefix(self, strs): if strs is None or strs ==[]:return '' result ='' pre =None for cur in xrange(len(s

LeetCode:最长公共前缀【14】

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

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

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

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

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