最长公共前缀

描述:给k个字符串,求出他们的最长公共前缀(LCP)
样例
在 “ABCD” “ABEF” 和 “ACEF” 中, LCP 为 “A”
在 “ABCDEFG”, “ABCEFG”, “ABCEFA” 中, LCP 为 “ABC”
新知识点:

  1. vector strs既可以是一维的,也可以是多维的。在这里讲解三维的初始化。
    vector<string> str;
    str.push_back("ABCDEFG");
    str.push_back("ABCEFG");
    str.push_back("ABCEFA");

即建立了三维的容器{{ABCDEFG},{ABCEFG},{ABCEFA}}
2. strs[0].size()//表示的是第一行的字符个数,即7.
3. strs.size()//表示的是总共的行数,即3.
4. string str="qw"; str += 'a';//表示在字符串str后面加上字符a,即str现在等于qwa.

思路:可以将第二行开始的每行字符串和第一行的字符串进行逐个比较,当不相同时,即返回退出。

class Solution {
public:
    /*
     * @param strs: A list of strings
     * @return: The longest common prefix
     */
    string longestCommonPrefix(vector<string> strs) {
        // write your code here
        if(strs.size() == 0)//字符串为空时
            return "";
        string res = "";
        for(int j = 0; j < strs[0].size(); j ++){//列数逐加
            for(int k = 1; k < strs.size(); k ++){//行数从第一行开始逐加
                if( strs[k][j] != strs[0][j]){//每一行和第一行的相同列数的字符进行比较,当不相同时,返回退出
                    return res;
                }
            }
            res += strs[0][j];//当相同时,加上相同的字符
        }
        return res;
    }
};

你可能感兴趣的:(LintCode,容器)