LeetCode 14. 最长公共前缀
2019-03-27 01:18
357 查看
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串
""。
示例 1:
[code]输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
[code]输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母
a-z。
问题分析
先判断数组的大小,如果为0则说明数组为空,返回 ""。然后判断数组中所有的字符串最短的长度min_len,然后判断min_len如果等于0,则说明最小长度为0,也返回 ""。这时代码执行到这里,数组中至少有一个字符串,且最短长度大于0。这时进入for循环,从公共子串长度为1开始,依次将各个字符串的该长度的子串与第一个字符串该长度的字串比较,如果不相等则返回上一个长度的子串。如果循环结束、中途没有返回,说明在min_len长度内所有字符串都完全相同,返回min_len长度的第一个子串即可。到这里,程序是肯定结束的。所以实际上最后的return ""; ,实际上是执行不到的。
代码实现
[code]class Solution { public: string longestCommonPrefix(vector<string>& strs) { int min_len = INT_MAX; if(strs.size() == 0) return ""; for(int i = 0; i < strs.size(); i++) if(strs[i].size() < min_len) min_len = strs[i].size(); if(min_len == 0) return ""; int s = 1; string temp; for(; s <= min_len; s++){ temp = strs[0].substr(0, s); for(int j = 0; j < strs.size(); j++) if(strs[j].substr(0, s) == temp) continue; else return strs[0].substr(0, s - 1); } if(s == min_len + 1) return strs[0].substr(0, min_len); return ""; } };
相关文章推荐
- LeetCode 14. 最长公共前缀
- LeetCode 14 最长公共前缀(字符串)
- Leetcode 14: 最长公共前缀(Longest Common Prefix)
- [C++]LeetCode 14: Longest Common Prefix(最长公共前缀)
- LeetCode题解(python)-14. 最长公共前缀
- LeetCode - 14. 最长公共前缀
- leetcode-14-求字符串数组最长公共前缀
- LeetCode 14 Longest Common Prefix(最长公共前缀)
- LeetCode 14 Longest Common Prefix(最长公共前缀)(String)
- leetcode第三天 9回文数、13罗马数字转整数、14最长公共前缀
- leetcode的python实现 刷题笔记14:最长公共前缀
- leetcode——14——Longest Common Prefix最长公共前缀
- Leetcode14. 最长公共前缀
- LeetCode-14-Longest Common Prefix(最长公共前缀)
- leetcode-14-最长公共前缀
- leetcode 14 最长公共前缀(python)
- LeetCode 14 Longest Common Prefix(最长公共前缀)
- Leetcode(14) 最长公共前缀
- LeetCode 14. Longest Common Prefix最长公共前缀
- Leet Code 14 Longest Common Prefix - 最长公共前缀 - Java