【LeetCode 14】 Longest Common Prefix

本文介绍了一种解决LeetCode 14题——寻找字符串数组中最长公共前缀的有效方法。通过选取首个字符串作为基准,与其他字符串逐位进行比较,直到发现不匹配字符或遍历完所有字符串。此算法的时间复杂度为O(n*m),其中n为字符串数量,m为最短字符串长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*************************
LeetCode 14 Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.
*************************************/
/*****************************
思想:
1.取一个字符串为哨兵,比如取第一个字符串
2.余下字符串分别按位与哨兵字符串比较
3.直至有一个不匹配为止,或者一个字符串达到末尾为止
时间复杂度:
O(n*m)  n字符串个数 m字符串最短位数
*****************************/
string longestCommonPrefix(vector<string> &strs)
{
	if (strs.size()<1)
	{
		return "";
	}
	//以第一个为哨兵,余下的字符串按位分别与哨兵字符串相应位做比较,直至有一个不匹配为止
	int ii = 0;
	for (ii = 0; ii < strs[0].size(); ii++)
	{
		for (int jj = 1; jj < strs.size(); jj++)
		{
			if (ii >= strs[jj].size() || strs[jj][ii] != strs[0][ii])
			{
				if (ii == 0)
					return "";
				else
				  return strs[0].substr(0, ii);
			}
 
		}
	}
	return strs[0];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值