14Longest Common Prefix
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了14Longest Common Prefix相关的知识,希望对你有一定的参考价值。
文章目录如下
(1)自己的思路
(2)自己的代码
(3)别人的思路
(4)别人的代码
(5)对比自己的不足之处
题目如下:
Write a function to find the longest common prefix string amongst an array of strings.
(1)自己的思路
a.首先要选出所有string中最长的前缀,得纵向的比较每个string中相同的列的字符是否相等,如果相等,那么继续,如果发现不相等,那么直接返回前面扫描过的字符串即可。
b.这些前缀的长度最长也不超过所有string中最短的那个string的长度。
(2)自己的代码
class Solution { public: string longestCommonPrefix(vector<string>& strs) { int minLen = INT_MAX; int strsLen = strs.size(); for (int i = 0; i < strsLen; i++) { if (minLen > strs.at(i).length()) minLen = strs.at(i).length(); } vector<char> pref; int isFinish = false; char tmpC = ‘\0‘; char tmpc = ‘\0‘; for (int m = 0;m < minLen; m++) { tmpC = strs.at(0)[m]; for (int n = 0;n < strsLen; n++) { tmpc = strs.at(n)[m]; if (tmpC != tmpc) { isFinish = true; break; } } if (isFinish) break; pref.push_back(tmpC); } int preLen = pref.size(); string prefix(preLen, ‘\0‘); for (int t = 0;t < preLen; t++) { prefix.replace(t, 1, 1, pref.at(t)); } return prefix; } };
(3)别人的思路
思路是一样的,但是别人的代码确实是又精简,又清晰!
(4)别人的代码
class Solution { public: string longestCommonPrefix(vector<string> &strs) { if (strs.empty()) return ""; for (int idx = 0; idx < strs[0].size(); ++idx) { // 纵向扫描 for (int i = 1; i < strs.size(); ++i) { if (strs[i][idx] != strs[0][idx]) return strs[0].substr(0,idx); } } return strs[0]; } };
(5)对比自己的不足之处
a.如果说写代码是写作文的话,总觉得我用的是白话文,别人用的是文言文……
b.我的代码在VS2015上是可以编译运行的(运行结果正确),但是在网站上运行出错,我也不知道为什么……
以上是关于14Longest Common Prefix的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode(14)Longest Common Prefix
leetcode14. Longest Common Prefix
leetcode14. longest common prefix