LeetCode —— 14. Longest Common Prefix解题思路
来源:互联网 发布:web原型设计工具 知乎 编辑:程序博客网 时间:2024/05/17 00:02
题目:Write a function to find the longest common prefix string amongst an array of strings.(写一个函数,找出字符串数组中最长公共前缀)
思路:(我是基于正向考虑的,即从最长公共前缀的第一个字符开始匹配,直到最长公共前缀的最后一个字符为止)先处理两种特殊情况:
1.如果需要判断的字符串集合strs为空,则直接返回结果“”;
2.如果需要判断的字符串集合strs中只要一个元素,则最长公共前缀即为该元素本身,直接返回该元素即可;
一般情况:
先遍历一遍字符串数组strs,找到最短的一个字符串shortestStr,以此为判断标准。每次取shortestStr的一个字串对字符串集合strs中的其它字符串进行前缀匹配,若匹配成功,则该字串为最长公共前缀的一部分,然后使字串在原来的基础上长度增加一,继续进行新一轮的匹配,直到字串等于shortestStr本身为止,否则匹配失败。输出“”;
代码如下:
class Solution { public String longestCommonPrefix(String[] strs) { if(strs.length == 0) return ""; if(strs.length == 1) return strs[0]; String shortestStr = strs[0]; String ans = ""; int i, shortestStrIndex = 0; for(i = 1; i < strs.length; i++) { if(shortestStr.length() > strs[i].length()) { shortestStr = strs[i]; } } while(shortestStrIndex < shortestStr.length()) { for(i = 0; i < strs.length; i++) { if(strs[i].indexOf(shortestStr.substring(0, shortestStrIndex+1)) < 0) break; else if(!strs[i].substring(0, shortestStrIndex+1).equals(shortestStr.substring(0, shortestStrIndex+1))) break; } if(i == strs.length) ans = shortestStr.substring(0, shortestStrIndex+1); shortestStrIndex++; } return ans; }}
Ps:提交代码之后,通过了。但是运行时间略长,看了一下运行时间最短的代码,才发现第一步没必要找出最短的字符串,因为最长公共前缀是固定的啊。。。这一步操作多余了。参考下面给出LeetCode 记录中最短运行时间的代码,可以发现,这题要是从逆向出发,直接考虑最长公共前缀,则要简单的多。
class Solution { public String longestCommonPrefix(String[] strs) { if(strs==null || strs.length==0) return ""; String prefix = strs[0]; int i=1; while(i<strs.length){ while(strs[i].indexOf(prefix)!=0) prefix = prefix.substring(0,prefix.length()-1); i++; } return prefix; }}
阅读全文
0 0
- LeetCode —— 14. Longest Common Prefix解题思路
- [leetcode] 14. Longest Common Prefix 解题报告
- [Leetcode] 14. Longest Common Prefix 解题报告
- leetcode解题报告14. Longest Common Prefix
- LeetCode——14. Longest Common Prefix
- Leetcode——14. Longest Common Prefix
- LeetCode—Longest Common Prefix
- leetCode 14.Longest Common Prefix(最长公共前缀) 解题思路和方法
- Longest Common Prefix ——解题报告
- 【LeetCode】14.Longest Common Prefix(Easy)解题报告
- LeetCode解题报告--Longest Common Prefix
- [LeetCode] Longest Common Prefix 解题报告
- [leetcode javascript解题]Longest Common Prefix
- [LeetCode] Longest Common Prefix 解题报告
- [LeetCode 解题报告]014. Longest Common Prefix
- 【LeetCode】Longest Common Prefix 解题报告
- leetcode解题方案--014--Longest Common Prefix
- LeetCode解题-#14-Longest Common Prefix
- python3爬虫(三) BeautifulSoup模块的安装和介绍
- RadioGroup组件拖到按钮上方出现一个点而不是方框,
- 2017哈理工低年级组院赛决赛 I-幸运大奖
- 100、101、104-递归
- 用 C 语言画科赫雪花
- LeetCode —— 14. Longest Common Prefix解题思路
- MyBatis批量处理Oracle数据库数据
- Java面试题全集(下)
- Longest Valid Parentheses:最长括号子段匹配
- 红米1S的android 4.4.4刷机到android 7.1的Lineage OS 14.1
- idea 创建Web Service Client 报错 java.lang.AssertionError: org.xml.sax.SAXParseException; systemId:
- [BZOJ2746]-[HEOI2012]旅行问题-fail树+倍增LCA
- 算法分析与设计丨第十五周丨LeetCode(19)——Longest Palindromic Substring(Medium)
- Android动画插值器之PathInterpolator浅析