leetcode笔记:Longest Common Prefix
2015-10-21 01:33
302 查看
一. 题目描述
Write a function to find the longest common prefix string amongst an array of strings.
二. 题目分析
题目的大意是,给定一组字符串,找出所有字符串的最长公共前缀。
对比两个字符串的最长公共前缀,其前缀的长度肯定不会超过两个字符串中较短的长度,设最短的字符串长度为
使用变量
一个特殊情况是,若数组中的某个字符串长度为
三. 示例代码
四. 小结
该题思路不难,而且还有几种相似的解决思路,在实现时需要做到尽量减少比较字符的操作次数。
Write a function to find the longest common prefix string amongst an array of strings.
二. 题目分析
题目的大意是,给定一组字符串,找出所有字符串的最长公共前缀。
对比两个字符串的最长公共前缀,其前缀的长度肯定不会超过两个字符串中较短的长度,设最短的字符串长度为
n,那么只要比较这两个字符串的前
n个字符即可。
使用变量
prefix保存两个字符串的最长公共前缀,再将
prefix作为一个新的字符串与数组中的下一个字符串比较,以此类推。
一个特殊情况是,若数组中的某个字符串长度为
0,或者求得的当前最长公共前缀的长度为
0,就直接返回空字符串。
三. 示例代码
#include <iostream> #include <string> #include <vector> using namespace std; class Solution { public: string longestCommonPrefix(vector<string> &strs) { if (strs.size() == 0) return ""; string prefix = strs[0]; for (int i = 1; i < strs.size(); ++i) { if (prefix.length() == 0 || strs[i].length() == 0) return ""; int len = prefix.length() < strs[i].length() ? prefix.length() : strs[i].length(); int j; for (j = 0; j < len; ++j) { if (prefix[j] != strs[i][j]) break; } prefix = prefix.substr(0,j); } return prefix; } };
四. 小结
该题思路不难,而且还有几种相似的解决思路,在实现时需要做到尽量减少比较字符的操作次数。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- 关于指针的一些事情
- 数据库链接字符串查询网站
- android上改变listView的选中颜色
- String.intern
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Prototype源码浅析 String部分(二)
- Flex字符串比较 还有Flex字符串操作
- Ruby中的String对象学习笔记
- Ruby中创建字符串的一些技巧小结
- ASP下经常用的字符串等函数参考资料
- 将字符串小写转大写并延时输出的批处理代码
- 将字符串转换成System.Drawing.Color类型的方法
- Lua中调用C++函数示例
- Lua源码中字符串类型的实现
- Lua性能优化技巧(四):关于字符串