标签:
#include<iostream> #include<string> #include<vector> using namespace std; //第10题:找最长公共前缀,Longest Common Prefix //abcd //ab //abjklg //输出:ab //自己的思路:从第一个串的第一个字符开始匹配,后面的串与第一串进行匹配。如果都能匹配,则第一个串即为最长前缀,若不行,则从不行的那个字符直接推出循环 //原始版本:设置flag和flag1,flag用于确定哪个字符可以加入到最长匹配字符串中,flag1用于当遇到不能匹配的串时来结束外层循环 string longestCommonPrefixpre(vector<string>& strs) { int i,j,flag=0,flag1=0; string com; if(strs.size()==0) //一开始没有通过就是因为没有这行,当strs为空的时候没有考虑进去 return com; for(i=0;i<strs[0].size();i++) { flag=0; for(j=0;j<strs.size();j++) { if(strs[j][i]!=strs[0][i]) { flag1=1; break; } flag++; } if(flag==strs.size()) com.push_back(strs[0][i]); if(flag1==1) break; } return com; } //改进:两个标志位都可以不用,只要当内层循环遇到不匹配时直接return com即可 string longestCommonPrefix(vector<string>& strs) { int i,j; string com; if(strs.size()==0) return com; for(i=0;i<strs[0].size();i++) { for(j=0;j<strs.size();j++) { if(strs[j][i]!=strs[0][i]) { return com; } } com.push_back(strs[0][i]); } return com; } int main() { vector<string> v; v.push_back("abcdf"); v.push_back("abcff"); v.push_back("ab"); v.push_back("abc"); //cout<<convert(s,2)<<endl;; cout<<longestCommonPrefix(v)<<endl; }
leetcode - 14:Longest Common Prefix
标签:
原文地址:http://my.oschina.net/a20092173/blog/501339