首先注意下前缀/后缀子串的区别:

"前缀"和"后缀": "前缀"指除了最后一个字符以外,一个字符串的全部头部组合;"后缀"指除了第一个字符以外,一个字符串的全部尾部组合。
"子串":可以出现在一个字符串的任意位置的子字符串;
比如"abcde" ,"a"、"ab"、"abc"、"abcd"是前缀,而任意连续位置"bc"、"abc"、"cde"等都属于子串!!

今天就是忘了它们的区别,吃了一大亏;当时就想,怎么一简单题还弄出这么多花样。。。

思路:最长公共前缀肯定蕴含在最短子串中,所以for(i from 0 to 最短子串的长度) ,把每个字符串对应位置的字符都与它比较,如果出现不相等,则0~i-1就是最长公共前缀;

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;bool cmp(string s1, string s2) //用于找到最短字符串的比较函数
{return s1.length() < s2.length();
}string longestCommonPrefix(vector<string> &strs)
{string res = "";if (strs.size() == 0)return res;if (strs.size() == 1)return strs[0];//把vector中得字符串按长度大小排序sort(strs.begin(), strs.end(), cmp);//只需要把按下标将最小得字符串与后面逐步比较res = strs[0]; //最小字符串for (int i = 0; i < res.length(); i++){for (int j = 0; j < strs.size(); j++){if(res[i]!=strs[j][i]) //每个字符串的对应位置与res对应位置相比较return res.substr(0,i) ;//substr(起始位置,字符个数)}}
}int main()
{vector<string> test;test.push_back("flight");test.push_back("flowr");test.push_back("flow");cout<<longestCommonPrefix(test);return 0;
}

LeetCode每日一题:14.longest-common-prefix(最长公共前缀)相关推荐

  1. LeetCode in Python-14. Longest Common Prefix 最长公共前缀

    Longest Common Prefix 最长公共前缀 题目 解法1.逐位比较 解法2.利用集合性质 解法3.zip+sets 解法4.借助os模块自带函数... 出处 题目 解法1.逐位比较 cl ...

  2. leetcode python3 简单题14. Longest Common Prefix

    1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第十四题 (1)题目 英文: Write a function to find th ...

  3. 【easy!】LeetCode 14. Longest Common Prefix

    LeetCode 14. Longest Common Prefix Solution1: 用的暴力遍历,时间复杂度O(n2)O(n2)O(n^2) class Solution { public:s ...

  4. JavaScript实现longest Common Substring最长公共子串算法(附完整源码)

    JavaScript实现longest Common Substring最长公共子串算法(附完整源码) longestCommonSubstring.js完整源代码 longestCommonSubs ...

  5. C++longest common string最长公共字符串的实现(附完整源码)

    C++longest common string最长公共字符串的实现 longest common string最长公共字符串实现的完整源码(定义,实现,main函数测试) longest commo ...

  6. C++longest common subsequence最长公共子序列的实现(附完整源码)

    C++longest common subsequence最长公共子序列 longest common subsequence最长公共子序列的完整源码(定义,实现,main函数测试) longest ...

  7. LeetCode:14. Longest Common Prefix

    两年硕士超快的鸭,又要准备秋招啦!0508第一题~ 题目 Write a function to find the longest common prefix string amongst an ar ...

  8. LeetCode 14. Longest Common Prefix字典树 trie树 学习之 公共前缀字符串

    所有字符串的公共前缀最长字符串 特点:(1)公共所有字符串前缀 (好像跟没说一样...) (2)在字典树中特点:任意从根节点触发遇见第一个分支为止的字符集合即为目标串 参考问题:https://lee ...

  9. LeetCode - Easy - 14. Longest Common Prefix

    Topic String Description https://leetcode.com/problems/longest-common-prefix/ Write a function to fi ...

  10. LeetCode: 14. Longest Common Prefix

    Write a function to find the longest common prefix string amongst an array of strings. 大意就是,写一个函数可以找 ...

最新文章

  1. Android Camera 系统架构源码分析
  2. 什么是Java多态?如何实现Java多态?
  3. Angular:where does watchers in scope come from
  4. c语言四个数找大wxyz,2015年计算机二级《C语言》考试上机测试题(7)
  5. [剑指offer]面试题15:链表中倒数第k个结点
  6. ajax 更新模型数据_DuangDuangDuang,重点来啦!高薪全靠它——百战Web前端课程更新03.11...
  7. 企业正确进行数字化转型的7个秘诀
  8. Python版——博客网站九 编写Android版本的移动App
  9. 《设计模式之禅》之——六大设计原则解读
  10. SpringBoot整合Drools规则引擎动态生成业务规则
  11. 注册规划师 计算机科学与技术,关于公布2018年度注册城乡规划师考试合格人员名单的通知...
  12. LeetCode 30. Substring with Concatenation of All Words
  13. 【从 0 开始机器学习】逻辑回归识别手写字符!
  14. 九大内置对象及其常用方法
  15. 安卓开关Switch使用的小细节
  16. 【资损】系统迭代过程中的兼容性设计
  17. 龙芯电脑上架设网络学习管理系统Moodle
  18. Firefox的下载处理器:FlashGot v1.0 Final颁发
  19. 512-rear chassis fan not detected的解决方法
  20. 1072 开学寄语 C++实现

热门文章

  1. SpringMVC_Controller注解与RequestMapping
  2. 3-1067. 试密码
  3. 深入浅出JMS(三)--ActiveMQ简单的HelloWorld实例
  4. Spring的一种拦截器SimpleUrlHandlerMapping
  5. preg_replace的一些细节
  6. 2016年Google面筋记录
  7. ExtJs - grid 合并单元格 跨行跨列
  8. BizTalk接收消息后路由失败
  9. python每日经典算法题5(基础题)+1(中难题)
  10. 8.18 NOIP模拟测试25(B) 字符串+乌鸦喝水+所驼门王的宝藏