LeetCode:Longest Common Prefix
来源:互联网 发布:陕师大远程网络教育 编辑:程序博客网 时间:2024/06/03 05:49
推荐参照:Leetcode题目难度等级及面试频率总结
题目描述: Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.
思路一:
首先,既然是公共前缀,所以第一个子串中定有,所以假设第一个字符串和第二个字符串中长度较小者为前缀,然后依次和后面的进行比较即可。
class Solution { public String longestCommonPrefix(String[] strs) { if (strs == null) return null; if (strs.length == 0) return ""; if (strs.length == 1) return strs[0]; String word = strs[0]; int prefixLength = word.length(); for (int i = 1; i < strs.length; i++) { String nextWord = strs[i]; prefixLength = Math.min(prefixLength, nextWord.length()); for (int j = 0; j < prefixLength; j++) if (word.charAt(j) != nextWord.charAt(j)) { prefixLength = j; break; } } return word.substring(0, prefixLength); }}
思路二:
横向扫描
LCP(S1,...,Sn)=LCP(LCP(LCP(S1,S2),S3),...,Sn)
class Solution { public String longestCommonPrefix(String[] strs) { if (strs.length == 0 || strs == null) return ""; String pre = strs[0]; int i = 1; while (i < strs.length) { while (strs[i].indexOf(pre) != 0) pre = pre.substring(0, pre.length() - 1);// 直到找到后一个字符串包含前一个为止 i++;// 判断下一个字符串 } return pre; }}
思路三:
因为如果当最短的字符串在数组最后,思路二扔需要比较S次,所以采取纵向扫描,即判断相同下标处的字符。
public String longestCommonPrefix(String[] strs) { if (strs == null || strs.length == 0) return ""; for (int i = 0; i < strs[0].length() ; i++){ char c = strs[0].charAt(i); for (int j = 1; j < strs.length; j ++) { if (i == strs[j].length() || strs[j].charAt(i) != c) return strs[0].substring(0, i); } } return strs[0];}
思路四:
先将字符数组进行排序,这样我们就可以直接比较第一个和最后一个字符串,取他们的最长公共子串即可。
import java.util.*;class Solution { public String longestCommonPrefix(String[] strs) { if (strs == null) return null; if (strs.length == 0) return ""; Arrays.sort(strs); StringBuffer result = new StringBuffer(); 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]) { result.append(b[i]); } else { return result.toString(); } } return result.toString(); }}
—–乐于分享,共同进步
—–更多文章请看:http://blog.csdn.net/u011489043
—–Any comments greatly appreciated
0 0
- LeetCode: Longest Common Prefix
- LeetCode Longest Common Prefix
- LeetCode : Longest Common Prefix
- [Leetcode] Longest Common Prefix
- [LeetCode] Longest Common Prefix
- [LeetCode]Longest Common Prefix
- LeetCode-Longest Common Prefix
- [LeetCode] Longest Common Prefix
- LeetCode - Longest Common Prefix
- leetcode Longest Common Prefix
- LeetCode | Longest Common Prefix
- Leetcode: Longest Common Prefix
- LeetCode: Longest Common Prefix
- 【LeetCode】Longest Common Prefix
- [LeetCode] Longest Common Prefix
- [LeetCode]Longest Common Prefix
- leetcode: Longest Common Prefix
- LeetCode Longest Common Prefix
- python爬虫之旅第一站
- poj 2352 Stars(树状数组)
- 推荐的网站
- D-Bus 体系
- Android 仿微信的图片选择器ImageSelector的使用
- LeetCode:Longest Common Prefix
- dbus实例讲解1
- 洛谷 P1064 金明的预算方案 依赖背包
- tf.concat的用法
- 自己写的粒子系统
- 蓝桥杯java第八届第七题--日期问题
- poj 3276 Face The Right Way(开关问题)
- 选择排序
- 你所不知道的Activity转场动画——ActivityOptions,activity转场动画