一、问题描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
题目链接:最长公共前缀
二、题目要求
样例 1
输入:strs= ["flower","flow","flight"] 输出:"fl"
样例 2
输入:strs= ["dog","racecar","car"] 输出:""解释:输入不存在公共前缀。
考察
字符串、前缀求值建议用时15~35min
三、问题分析
这一题其实不算难,最长的公共前缀,以样例 1为例,我们就选第一个字符串flower作为基底。
首先,下面左侧代表基底的前缀,左侧代表其他的字符串是否包含这个前缀 1包含 0不包含,最左侧代表截止到目前最长的公共前缀。
f111fl112flo102flowflower
当出现0的时候就不需要向下遍历了,你想想前面的字符都不包含的话,你再向后遍历有什么用呢?
四、编码实现
classSolution { public: stringlongestCommonPrefix(vector<string>&strs) { inti,j,n=strs.size();//初始化数据strings=strs[0],t,k="";//将第一个字符串作为基底,k作为子串前缀和for(i=0;i<s.size();i++) { t=s.substr(0,i+1);//依次向后遍历,前缀和逐步增大for(j=1;j<n;j++)//遍历其它数组元素 { if(strs[j].find(t)!=0)//只要不存在这个前缀returnk;//直接输出拜拜 } k=t; //否则更新一下数据 } returnk; } };