leetcode之路014 Longest Common Prefix
2015-07-29 23:35
134 查看
题目大意:找到一个字符串数组的最大公共前缀字符。挺简单的一个题,求解如下。
思路:对第一个第二个字符串,找到最长前缀为te,然后找te和第三个的最长前缀,依次循环到最后即可。循环中加入判断te是否为空,若为空直接返回空。
提交ac的代码如下,运行时间8ms:
不过讨论区还有一种方式,从strs[0][0] to strs[i][0]进行比对,即垂直方向进行比对,对这种两种方式,垂直方向比较更快一些。原因是,假设前面所有字符串都相同为“abcdefgh”,最后一个不同为“cdfrg”,此时水平方式需要比较到最后才行。因此垂直方式更快一些。
思路:对第一个第二个字符串,找到最长前缀为te,然后找te和第三个的最长前缀,依次循环到最后即可。循环中加入判断te是否为空,若为空直接返回空。
提交ac的代码如下,运行时间8ms:
class Solution { public: string longestCommonPrefix(vector<string>& strs) { if(strs.size()==0) return ""; string te1=strs[0]; for(int i=1;i<strs.size();++i) { int j=0; while(te1[j]==strs[i][j]&&j<te1.length()&&j<strs[i].length()) ++j; te1=te1.substr(0,j); if(te1.size()==0) return ""; } return te1; } };
不过讨论区还有一种方式,从strs[0][0] to strs[i][0]进行比对,即垂直方向进行比对,对这种两种方式,垂直方向比较更快一些。原因是,假设前面所有字符串都相同为“abcdefgh”,最后一个不同为“cdfrg”,此时水平方式需要比较到最后才行。因此垂直方式更快一些。
相关文章推荐
- spring与struts的整合
- cocos2dx骨骼动画Armature源码分析(一)
- 字符设备驱动
- JAVA学习的第二天感想
- B - String Manipulation 1.0-CodeForces 159C
- ABP(现代ASP.NET样板开发框架)系列之12、ABP领域层——工作单元(Unit Of work)
- 大数据系列修炼-Scala课程05
- What does __init__ == __main__ mean?
- mysql语法错误
- 1034
- 1036
- 偶感
- 基于StoryBoard自动布局--Cell自适应高度
- leetcode之路013 Roman to Integer
- HDU 5316——Magician——————【线段树区间合并区间最值】
- 如何在JS中应用正则表达式
- 故障案例:slave延迟很大
- 【西祠日志】【11】周三,不错不错,逐步使用上了模板输出
- 如何获取当前日期,如何格式化日期输出?
- 黑马程序员------OC类的封装 继承 多态