我的代码:(4ms)

/*好像又加了数据,结果RE了。*/
class
Solution { public: string longestCommonPrefix(vector<string>& strs) { string res=""; if(strs.empty()){ return res; } for(int j=0;j<strs[0].size();j++){ for(int i=0;i<strs.size();i++){ if((i+1!=strs.size())&&strs[i][j]!=strs[i+1][j]){ return res; } } res+=strs[0][j]; } return res; } };

改正之后的代码:先找出一个最短的。

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string res="";
        if(strs.empty()){
            return res;
        }
        int lens=strs[0].size();
        for(int i=1;i<strs.size();i++){
            if(strs[i].size()<lens){
                lens=strs[i].size();
            }
        }
        for(int j=0;j<lens;j++){
            for(int i=0;i<strs.size();i++){
                if((i+1!=strs.size())&&strs[i][j]!=strs[i+1][j]){
                    return res;
                }
            }
            res+=strs[0][j];
        }
        return res;
    }
};
Ver 2

 

 

最快:(0ms)

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if(strs.empty())        
            return "";
        int n=strs.size();
        string s=strs[0];
        for(int i=1;i<n;i++){
            if(s.length()>strs[i].length())
                s=s.substr(0,strs[i].length());
            for(int j=0;j<s.length();j++)
                if(s[j]!=strs[i][j]){
                    s=s.substr(0,j);
                    break;
                }
        }
        return s;
    }
};

 这是另一种方法。我的是,外层遍历字符串,内层遍历字符串数组。这个是反过来。

posted on 2018-04-20 08:41  苛性氢  阅读(108)  评论(0编辑  收藏  举报