最长公共前缀

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

  1. vector<string> 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;
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值