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

阅读: 评论:0

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

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

翻译

写一个函数(或方法)来寻找一个字符串数组中的最长公共前缀。

原文

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

注释

"abcdefg"
"abcdefghijk"
"abcdfghijk"
"abcef"上面的字符串数组的最长公共前缀就是"abc"。

分析

如下图所示,第一步就是要找出该字符串数组中的最短字符串的长度及其序列。

第二步,用 for 循环从第一个字符串到最后一个字符串依次做比较,具体步骤如下:

  • 外层 for 循环中用i表示字符串长度,从 minSize 一直可以递减到 0

  • 初始result即为最短字符串(通过 minIndex 确定)的前i个字符

  • 内层 for 循环中用 j 表示字符串数组中的索引,依次递增。j等于 minIndex 时不做操作(因为为同一个字符串不必比较)

  • 否则通过临时字符串 temp 来获取索引为j的字符的前 i 个字符

  • 需要所有的temp都与 result 相等

  • 如果 j len相等了,说明已经遍历完所有的字符串

  • 每次判断的字符串长度缩减之后都更新 result

public class Solution {public string LongestCommonPrefix(string[] strs) {int len = strs.Length;if(len == 0)return "";string result = "";int minSize = 100000;int minIndex = 0;if(len == 1){result = strs[0];return result;}for(int i = 0; i < len; i++){int size = strs[i].Length;if(size < minSize){minSize = size;minIndex = i;}}for(int i = minSize; i >= 0; i--){result = strs[minIndex].Substring(0,i);int j = 0;for(; j < len; j++){if(j == minIndex)continue;string temp = strs[j].Substring(0,i);if(result != temp)break;}if(j == len)return result;}return result;      }
}
updated at 2016/09/17

其实注意到这里只是求公共前缀,前缀,而不是整个字符串数组内的公共字符串,这就容易得多了。只要将字符串排序,因为都是字母字符,所以这也能达到非常好的效果。

然后只要以此比较即可。

    public String longestCommonPrefix(String[] strs) {StringBuilder prefix = new StringBuilder();if (strs != null && strs.length > 0) {Arrays.sort(strs);char[] a = strs[0].toCharArray();char[] b = strs[strs.length - 1].toCharArray();for (int i = 0; i < a.length; i++) {if (b.length > i && b[i] == a[i]) {prefix.append(b[i]);} else {String();}}}String();}

本文发布于:2024-01-27 23:00:30,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063676293164.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:前缀   最长   Longest   LeetCode   String
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23