2、最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例1
输入: ["flower","flow","flight"]
输出: "fl"
示例2
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
Solution
class Solution {
public:string longestCommonPrefix(vector<string>& strs) {string str="";int i=0;int over=0;if(strs.size()==0)return str;if(strs.size()==1)return strs[0];while(1){for(int j=1;j<strs.size();j++){if(i==strs[j].size()){over=1;break;}if(strs[j][i]==strs[0][i]){if(j==strs.size()-1){str+=strs[0][i];i++;}elsecontinue;}else{over=1;break;}}if(over)return str;}}
};
解题思路:
针对输入的字符串组存在的特殊情况进行特殊处理,如果没有字符串,则直接返回空,如果只有一个字符串,则直接将该字符串返回即可。
其余情况,设两个变量,分别代表横向和纵向,以第一个字符串做参考,检查其余字符串,有以下情况时可结束检查,并返回。1、横向变量的值超过某一字符串的最长长度;2、纵向比较时发现不相等的情况;如果字符比较相等,且到达最后一个字符串,则更新返回字符串,继续进行比较。
大神的做法;
vector用法