No.014:Longest Common Prefix
问题:
Write a function to find the longest common prefix string amongst an array of strings.
官方难度:
Easy
翻译:
寻找一个字符串数组的最长公共前缀。
方法一:
- 数组长度为0,返回空字符串。
- 将数组第一项,作为初始的公共前缀。
- 从数组第二项开始进入循换,整理当前字符和当前前缀字符的长度。
- 以小长度的字符串为基准,从头开始逐个匹配,遇到不同的字符时,更新前缀字符。
- 为防止完全匹配情况,如“aa”匹配“aaa”。由于不存在不同的字符,所以不会更新的情况,设定更新标志位flag,当flag为false时,将前缀字符更新为小长度字符。
- 在内循环结束之后,若得到的前缀字符长度为0,直接跳出整个循环。
- 外循环可以使用foreach循环。
方法一的解题代码:
private static String method(String[] strs) {
String prefix = strs.length == 0 ? "" : strs[0];
// 从数组第二项开始遍历
for (String compare : strs) {
// 整理长度
String s1 = prefix.length() > compare.length() ? compare : prefix;
String s2 = prefix.length() > compare.length() ? prefix : compare;
boolean flag = false;
for (int j = 0; j < s1.length(); j++) {
if (s1.charAt(j) != s2.charAt(j)) {
prefix = prefix.substring(0, j);
flag = true;
break;
}
}
// 防止完全匹配的情况
if (!flag) {
prefix = s1;
}
if (prefix.length() == 0) {
break;
}
}
return prefix;
}
method
方法二:
- 其实,String类自带了String.startWith()的实例方法,来判断一个字符串是否以另一个字符串为开头的形式。使用这种方法可以进一步地增强效率。
- 在内循环中,判断当前字符是否匹配当前前缀,若不是消去前缀字符串的最后一个字符,直到匹配成功。
- 注意入参检查。
方法二的解题代码:
public static String longestCommonPrefix(String[] strs) {
if (strs == null) {
throw new IllegalArgumentException("Input error");
}
String prefix = strs.length == 0 ? "" : strs[0];
for (String compare : strs) {
while (!compare.startsWith(prefix)) {
// 不匹配,消去前缀最后一项
prefix = prefix.substring(0, prefix.length() - 1);
}
if (prefix.length() == 0) {
break;
}
}
return prefix;
}
longestCommonPrefix
相关链接:
https://leetcode.com/problems/longest-common-prefix/
PS:如有不正确或提高效率的方法,欢迎留言,谢谢!
No.014:Longest Common Prefix的更多相关文章
- LeetCode专题-Python实现之第14题:Longest Common Prefix
导航页-LeetCode专题-Python实现 相关代码已经上传到github:https://github.com/exploitht/leetcode-python 文中代码为了不动官网提供的初始 ...
- LeetCode第[14]题(Java): Longest Common Prefix
题目:最长公共前缀 难度:EASY 题目内容: Write a function to find the longest common prefix string amongst an array o ...
- LeetCode OJ:Longest Common Prefix(最长公共前缀)
Write a function to find the longest common prefix string amongst an array of strings. 求很多string的公共前 ...
- LeetCode 14: Longest Common Prefix
Longest Common Prefix Write a function to find the longest common prefix string amongst an array of ...
- 【LeetCode】LeetCode——第14题:Longest Common Prefix
14. Longest Common Prefix My Submissions Question Editorial Solution Total Accepted: 97052 Total Sub ...
- # Leetcode 14:Longest Common Prefix 最长公共前缀
公众号:爱写bug Write a function to find the longest common prefix string amongst an array of strings. If ...
- leetcode【14题】Longest Common Prefix
题目:Longest Common Prefix 内容: Write a function to find the longest common prefix string amongst an ar ...
- No.014 Longest Common Prefix
14. Longest Common Prefix Total Accepted: 112204 Total Submissions: 385070 Difficulty: Easy Write a ...
- 【JAVA、C++】LeetCode 014 Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. 解题思路: 老实遍历即可, ...
随机推荐
- Ecshop :后台添加新功能 菜单及 管理权限 配置
需求:在<商品管理>下增加一项[商品推广管理]功能 一. 添加菜单项 打开 /admin/includes/inc_menu.php 文件(后台框架左边菜单),在最后添加一行如下: $mo ...
- javascript中可变值与不可变值(原始值)
字符串原始值修改不了1 var str = "abc"; 2 str[0] = "d"; 3 console.log(str[1]="f") ...
- MIME参考列表
定义 MIME(multipurpose internet mail extensions)多用途互联网邮件扩展类型是描述消息内容类型的因特网标准.MIME消息能包含文本.图像.音频.视频以及其他应用 ...
- CSS字体
字体系列 [1]5种通用字体系列:拥有相似外观的字体系列 serif字体:字体成比例,且有上下短线,包括Times\Georgia\New century Schoolbook sans-serif字 ...
- JSP网站开发基础总结《十》
经过上一篇的介绍相信大家对JSP提供的过滤器一定有了一个概念,本篇我们就一起再来研究一下关于创建多个过滤器时,如果有两个以上过滤器的过滤规则相同,那么这些过滤器的执行顺序如何呢?答案是根据我们在web ...
- HDU 1007Quoit Design(最近点问题)
最近点问题:二维平面中有n(n很大)个点,求出距离最近的两个点 思路:因为n的值很大,所以暴力和dp都行不通了吧!分治法就挺好的. 将区间一半一半的分开,直到分成只有一个点或两个点的时候! 对于只有两 ...
- 再读GFS论文
http://loopjump.com/gfs_paper_note/ 再读GFS的一些笔记.主要涉及GFS架构.Chunk大小选择的一些折中考量.元数据管理及锁.写数据流程.GFS一致性模型的理解. ...
- python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨
python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...
- python--基础学习(四)自然字符串、重复字符串、子字符串
python系列均基于python3.4环境 1.自然字符串和重复字符串 代码示例: str1=r'hello \npython' str2='hello \npython' str3="h ...
- python--基础学习(三)字符串单引号、双引号、三引号
1.基本认识 单引号字符串:'python' 双引号字符串:"python" 三引号字符串:'''python'''(三单引号),"""python& ...