14. Longest Common Prefix 简单的题,但是有精简代码的小技巧
2017-01-04 12:03
471 查看
Write a function to find the longest common prefix string amongst an array of strings.class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string res;
int h = strs.size();
if(h == 0) return res;
if(h == 1) return strs[0];
int i;
for(i = 0; i < strs[0].size() ; i++){
char first;
bool flag = false;
first = strs[0][i];//(i > 0 && strs[i][idx] != strs[i-1][idx])如果这样写 这一句可以省略
for(int r = 1; r < h; r++){
if(i >= strs[0].size() || strs[r][i] != first){//或的妙用, 判断前面为真的时候后面直接略过
flag = true;
break;
}
}
if(flag) break;
else res.push_back(strs[0][i]);
}
return res;
}
};精简后的代码竟然可以这么短小精悍!如下:
public:
string longestCommonPrefix(vector<string>& strs) {
string res;
int h = strs.size();
if(h == 0) return res;
if(h == 1) return strs[0];
int i;
for(i = 0; i < strs[0].size() ; i++){
char first;
bool flag = false;
first = strs[0][i];//(i > 0 && strs[i][idx] != strs[i-1][idx])如果这样写 这一句可以省略
for(int r = 1; r < h; r++){
if(i >= strs[0].size() || strs[r][i] != first){//或的妙用, 判断前面为真的时候后面直接略过
flag = true;
break;
}
}
if(flag) break;
else res.push_back(strs[0][i]);
}
return res;
}
};精简后的代码竟然可以这么短小精悍!如下:
class Solution { public: string longestCommonPrefix(vector<string>& strs) { string prefix = ""; for(int idx=0; strs.size()>0; prefix+=strs[0][idx], idx++) for(int i=0; i<strs.size(); i++) if(idx >= strs[i].size() ||(i > 0 && strs[i][idx] != strs[i-1][idx])) return prefix; return prefix; } };
相关文章推荐
- 对“C#写的简单的日历,窗体输出。”的改写,精简了一半多代码
- K-means自己写的代码,简单易懂,但是貌似效率有点低,没怎么优化
- 呵呵,刚刚水了一道题目。简单题就要水!PKU2895,精简到70行代码!
- 转kidwei 最简单但是却最有用的vtk三维重建代码
- Java 改进简单加法器实现(代码精简)
- 开发--省级三联动,简单的代码,但是功能不差
- [原]实例-简单设计&精简代码&复用代码
- 实例-简单设计&精简代码&复用代码
- 对“C#写的简单的日历,窗体输出。”的改写,精简了一半多代码
- 一个简单关于学生成绩管理的C++程序代码,但是对于拷贝析构函数目前还是不知其作用何在
- leetcode 722. Remove Comments 移除代码注释 + 简单状态机 + 有点烦但是需要细心
- 简单,但是非常有趣的两段c代码!
- 简单的PHP文件上传代码
- struts简单例子的分析(含代码注释和配置文件说明)
- 简单代码的性能差异
- log.c -- 看文档,还不如看代码来的简单。
- C#开发小技巧--对Text控件增量赋值的代码优化
- 对于构造方法的简单代码示例
- 简单代码的性能差异
- 一段精简的使用 ADODB.Stream 读写"大字段"的 VB 代码!