[LeetCode] Longest Common Prefix 字符串公有前序

Write a function to find the longest common prefix string amongst an array of strings.

Hide Tags

String


这是一道很简单的题目,判断输入的多个字符串的公有前序,简单的逻辑遍历查找就好。

算法流程:

  1. 判断输入的字符串数量,小于2时候做出相应返回。
  2. 获取最短字符串的长度。
  3. 设定标记flag,控制跳出循环,与长度返回的长度len。
  4. 在最短字符串长度的范围内循环。
  5. 循环中每次遍历全部字符串len 位的字符。
  6. 遇到不同设置flag 跳出循环,如果全部都相同len+1 进入下次循环。
  7. 返回长度。

其实可以简单点不求最短字符串长度,将这一步放入到判断是否相同时候。

 1 #include <iostream>
 2 #include <vector>
 3 #include <string>
 4 using namespace std;
 5
 6 class Solution {
 7 public:
 8     string longestCommonPrefix(vector<string> &strs) {
 9         int nvec = strs.size();
10         if(nvec<1) return "";
11         if(nvec<2) return strs[0];
12         int nmin = strs[0].length(),len=0;
13         bool flag = true;
14         for(int i =1;i<nvec;i++){
15             if(nmin>strs[i].length())   nmin = strs[i].length();
16         }
17         while(len<nmin){
18             for(int i=1;i<nvec&&flag;i++){
19                 if(strs[i][len]==strs[0][len])  continue;
20                 flag = false;
21             }
22             if(!flag)   break;
23             len++;
24         }
25         return strs[0].substr(0,len);
26     }
27 };
28
29 int main()
30 {
31     vector<string> strs={"289","25324","22434","232","234"};
32     Solution sol;
33     cout<<sol.longestCommonPrefix(strs)<<endl;
34     return 0;
35 }

时间: 2025-01-16 07:25:57

[LeetCode] Longest Common Prefix 字符串公有前序的相关文章

leetcode Longest Common Prefix 多个字符串的最长字串

1 public class Solution { 2 public String get(String a,String b) 3 { 4 5 if(a==""||b=="") return ""; 6 int len1=a.length(); 7 int len2=b.length(); 8 int len=len1; 9 if(len>=len2) len=len2; 10 String s=""; 11 for(

LeetCode——Longest Common Prefix

Write a function to find the longest common prefix string amongst an array of strings. 写一个函数找出字符串数组中的最长共现前缀字符串. 思路:共现,即要求数组中的所有元素的前缀中都要出现.所以所得的结果肯定是最短字符串的部分或全部或都不是,总之要以最短字符串为基准与其他字符串比较. public static String longestCommonPrefix(String[] strs){ int len

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

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

LeetCode: Longest Common Prefix 题解

Write a function to find the longest common prefix string amongst an array of strings. 题解: 寻找一组字符串的最长公共前缀.  最简单的方法,用一个字符串记录当前最长的公共前缀,然后依次比较.时间复杂度: O(N). 1 class Solution { 2 public: 3 string getPrefix(string a,string b) // 辅助函数用于获取两个字符串的公共前缀 4 { 5 st

Leetcode::Longest Common Prefix &amp;&amp; Search for a Range

一次总结两道题,两道题目都比较基础 Description:Write a function to find the longest common prefix string amongst an array of strings. 分析: 这道题目最重要的知道什么叫prefix前缀, 否则一不小心就做成了最长子序列.前缀就是两个序列的前多少位 都要是一样的,不能跳着对齐,这样就比较简单了,也可以求很多个序列的公共前缀. 1 class Solution { 2 public: 3 string

leetCode 14. Longest Common Prefix 字符串

14. Longest Common Prefix Write a function to find the longest common prefix string amongst an array of strings. 题目大意:求一组字符串的最长前缀. 代码如下: class Solution { public:     string longestCommonPrefix(vector<string>& strs) {         if(strs.size() == 0)

[leetcode] Longest Common Prefix @ Python

Source: https://oj.leetcode.com/problems/longest-common-prefix/ Write a function to find the longest common prefix string amongst an array of strings. Hint:   strs=['abc','ab','a'] strs=[ 'abc', 'ab', 'a', ] We can think of strs as a column length va

leetcode Longest Common Prefix 14

Longest Common Prefix Total Accepted: 47436 Total Submissions: 182575 Write a function to find the longest common prefix(前缀) string amongst an array of strings. Hide Tages String 翻译:编写一个函数去查找在字符串数组中的最长公共前缀的字符 尝试一(失败),代码如下: public static String longe

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