leetcode-14 Longest Common Prefix
2016-03-25 16:43
411 查看
Write a function to find the longest common prefix string amongst an array of strings
求多个字符串的最长公共前缀。
1.纵向扫描,从位置0 开始,对每一个位置比较所有字符串,直到遇到一个不匹配。
2.横向扫描,每个字符串与第0 个字符串,从左到右比较,直到遇到一个不匹配。
//////////////////////////////////////////////////////////////////////////
// start: find common prefix of all strings
// 纵向扫描
string longestCommonPrefix1(vector<string> &strs)
{
if(strs.empty())
return "";
for(int i = 0; i < strs[0].length(); i++) // 循环不会超过任意一个的长度
{
for(int j = 1; j < strs.size(); j++)
if(i > strs[j].size() || strs[j][i] != strs[0][i])
return strs[0].substr(0, i); // substr(index, count)
}
return strs[0]; // 只有一个
}
// 横向扫描
string longestCommonPrefix2(vector<string> &strs)
{
if(strs.empty())
return "";
int right = strs[0].size()-1;
for(int i = 1; i < strs.size(); i++)
{
for(int j = 0; j <= strs[0].right(); j++) // 每次循环一个字符串比较
if(j < strs[i].size() || strs[i][j] != strs[0][j])
right = j - 1;
}
return strs[0].substr(0, right + 1);
}
// end
//////////////////////////////////////////////////////////////////////////
求多个字符串的最长公共前缀。
1.纵向扫描,从位置0 开始,对每一个位置比较所有字符串,直到遇到一个不匹配。
2.横向扫描,每个字符串与第0 个字符串,从左到右比较,直到遇到一个不匹配。
//////////////////////////////////////////////////////////////////////////
// start: find common prefix of all strings
// 纵向扫描
string longestCommonPrefix1(vector<string> &strs)
{
if(strs.empty())
return "";
for(int i = 0; i < strs[0].length(); i++) // 循环不会超过任意一个的长度
{
for(int j = 1; j < strs.size(); j++)
if(i > strs[j].size() || strs[j][i] != strs[0][i])
return strs[0].substr(0, i); // substr(index, count)
}
return strs[0]; // 只有一个
}
// 横向扫描
string longestCommonPrefix2(vector<string> &strs)
{
if(strs.empty())
return "";
int right = strs[0].size()-1;
for(int i = 1; i < strs.size(); i++)
{
for(int j = 0; j <= strs[0].right(); j++) // 每次循环一个字符串比较
if(j < strs[i].size() || strs[i][j] != strs[0][j])
right = j - 1;
}
return strs[0].substr(0, right + 1);
}
// end
//////////////////////////////////////////////////////////////////////////
相关文章推荐
- Copy-On-Write 技术——拖延战术的产物
- 转型操作工具类
- 用P2P方法快速分发Docker镜像
- JAVA多线程和并发基础面试问答
- leetcode-13 Roman to Integer
- C++中关于get()和getline()函数读取行的问题
- iOS程序猿之富文本(NSMuttableAttstring)
- Detours实现劫持
- 关于编译时候的问题
- 我作为一个面试官的感想
- ios学习总结(2) -- UIButton的使用
- 3.25课·········JavaScript的DOM操作
- 第2章 软件包管理简介
- java基础--HashSet详解
- hdfs 常用命令
- 用SharedPreferences保存List(Map(String, String))数据
- 练习一1001
- sizeof
- ubuntu 14.04配置XGboost
- 数组工具类