Longest Common Prefix

本文介绍了一种求解字符串数组中最长公共前缀的方法。通过对比字符串长度并逐字符匹配来确定最长公共前缀。文章提供了一个具体的Java实现示例。

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

题目:

Write a function to find the longest common prefix string amongst an array of strings.

题意:

就是求一个字符串数组中的所有字符串的最长前缀。也就是说在做一个字符串数组中,因为有很多个子字符串,所以需要依次比较。这里有一个思路,因为2个字符串的最长公共前缀,其长度必然不可能超过最短字符串的长度,设最短字符串长度为n,那么只要比较这2个字符串的前n个字符即可。得到的最长公共前缀prefix,再拿这个与数组中的下一个字符串做比较,方法同上。如果数组中的某个字符串长度为0,那么就直接返回""(不是null)。

public String longestCommonPrefix(String[] strs)
	{
		int length = strs.length;
		if(length == 0)
			return "";
		else
		{
			String prefix = strs[0];
			for(int i = 1; i < length; i++)
			{
				if(prefix.length() == 0 || strs[i].length() == 0)
					return "";     //每次先判断拿到的字符串的长度是否是0,如果是0,那么就直接返回空
				int len = prefix.length() < strs[i].length() ? prefix.length() : strs[i].length();  //然后再判断长度,哪个小,就将小的赋值给len
				int j = 0;
				for(j = 0; j < len; j++)    //每次都一次比较
				{
					if(prefix.charAt(j) != strs[i].charAt(j))
						break;
				}
				prefix = prefix.substring(0, j);
			}
			return prefix;
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值