14. 字符串数组的最长公共前缀 Longest Common Prefix

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

  1. public class Solution {
  2. public string LongestCommonPrefix(string[] strs) {
  3. StringBuilder result = new StringBuilder();
  4. if (strs != null && strs.Length > 0) {
  5. Array.Sort(strs);
  6. char[] a = strs[0].ToCharArray();
  7. char[] b = strs[strs.Length - 1].ToCharArray();
  8. for (int i = 0; i < a.Length; i++) {
  9. if (b.Length > i && b[i] == a[i]) {
  10. result.Append(b[i]);
  11. } else {
  12. return result.ToString();
  13. }
  14. }
  15. return result.ToString();
  16. } else {
  17. return "";
  18. }
  19. }
  20. }

null

时间: 2024-12-30 07:17:55

14. 字符串数组的最长公共前缀 Longest Common Prefix的相关文章

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

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

最长公共子串(Longest common substring)

问题描述: 给定两个序列 X=<x1, x2, ..., xm>, Y<y1, y2, ..., yn>,求X和Y长度最长的公共子串.(子串中的字符要求连续) 这道题和最长公共子序列(Longest common subsequence)很像,也可以用动态规划定义.公式如下: 这里c[i,j]表示以Xi,Yj结尾的最长公共子串的长度. 程序实现: int longestCommonSubstring(string x, string y) { int m = x.length();

后缀数组之最长公共前缀

#include<stdio.h> #define maxn 100 int main() { int rank[maxn],height[maxn],sa[maxn]= {0,3,1,4,2},s[maxn]= {1,2,3,2,3};//s串可以看成abcbc int i,j,k=0; for(i=0; i<5; i++) rank[sa[i]]=i; for(i=0; i<5; i++) { if(rank[i]==0)//当rank[i]=0的时候也就是求height[0]

利用后缀数组(suffix array)求最长公共子串(longest common substring)

摘要:本文讨论了最长公共子串的的相关算法的时间复杂度,然后在后缀数组的基础上提出了一个时间复杂度为o(n^2*logn),空间复杂度为o(n)的算法.该算法虽然不及动态规划和后缀树算法的复杂度低,但其重要的优势在于可以编码简单,代码易于理解,适合快速实现. 首先,来说明一下,LCS通常指的是公共最长子序列(Longest Common Subsequence,名称来源参见<算法导论>原书第3版p223),而不是公共最长子串(也称为最长公共子串). 最长公共子串问题是在文本串.模式串中寻找共有的

动态规划(二)最长公共子串(Longest Common Substring)

题目描述: 求两个输入序列的最长的公共子字符串的长度.子字符串中的所有字符在源字符串中必须相邻. 如字符串:21232523311324和字符串312123223445,他们的最长公共子字符串为21232,长度为5. 最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为: 子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列:也就是说,子串中字符的位置必须

【LeetCode OJ 14】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. 解题思路:寻找字符串数组的最长公共前缀,将数组的第一个元素作为默认公共前缀,依次与后面的元素进行比较,取其公共部分,比较结束后,剩下的就是该字符串数组的最长公共前缀,示例代码如下: public clas

CSU1632Repeated Substrings(后缀数组/最长公共前缀)

题意就是求一个字符串的重复出现(出现次数>=2)的不同子串的个数. 标准解法是后缀数组.最长公共前缀的应用,对于样例aabaab,先将所有后缀排序: aab 3    aabaab 1    ab 2    abaab 0    b 1    baab 每个后缀前面数字代表这个后缀与它之前的后缀(rank比它小1)的最长公共前缀的长度:然而就可以这样理解这个最长公共前缀LCP.aabaab与aab的最长公共前缀是3,那说明子串a.aa.aab都至少出现的两次,那么这就是后缀aab重复出现的子串个

LeetCode14 最长公共前缀

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

leetcode第14题--Longest Common Prefix

Problems:Write a function to find the longest common prefix string amongst an array of strings. 就是返回一个字符串数组的所有的公共前缀.不难.我是已第一个字符串为参考,然后依次遍历其他的字符串,一旦遇到不同的.就break.然后返回第一个字符串的相应子序列. class Solution { public: string longestCommonPrefix(vector<string> &