Leetcode14. 最长公共前缀

Leetcode14. 最长公共前缀

思路

从前往后找两两字符串的公共前缀,等到遍历完数组,结果就是所有字符串的公共前缀了。

代码

string prefixOf2(string s1, string s2) { //找出两个字符串的公共前缀
	int len = min(s1.length(), s2.length());
	int i = 0;
	while (i < len && s1[i] == s2[i]) {
		i++;  //公共前缀的位数
	}
	string pre = s1.substr(0, i);//取公共前缀
	return pre;
}

 string longestCommonPrefix(vector<string>& strs) {
        string pre="";
        if(strs.size()==0){}  //当字符串数组为空时,立刻返回,不然测试的时候会出现编译错误
        else{
            pre = strs[0];
	        for (int i = 1; i < strs.size(); i++) {
		         if (pre.length() == 0) break;  //公共前缀为空时跳出循环
		         else pre = prefixOf2(pre, strs[i]);
	        }   
        }
	    return pre;
    }

总结

  1. 刚开始看到题目时,以为要找最长子序列,想了很久,感觉有点麻烦,后来看了一下“解题”,才发现要找的是公共前缀T.T(认真点看题吧
  2. 第一次提交的时候出现了编译错误:Runtime Error Message:reference binding to null pointer of type ‘struct value_type’,查了一下,应该是测试用例为空数组时,出现了数组越界。原因是我一上来就取第0个元素pre = strs[0],后来先判断了数组是否为空就通过了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值