最长公共前缀

该博客探讨了如何解决LeetCode上的‘最长公共前缀’问题。博主首先介绍了初始的解决思路,即转化为字符数组并使用多个指针遍历,但因字符串数量不定而放弃。接着,博主提出了一种新策略,通过依次比较相邻字符串,得到新的公共前缀,以此迭代,直至遍历完整个数组。文章最后给出了代码实现。
摘要由CSDN通过智能技术生成

        题目
在这里插入图片描述
        示例
在这里插入图片描述
        思路:说一下我最开始的思想,最开始我想的是能不能将数组中的各个字符串取出来,然后将其转换为char[]数组,再定义三个指针,同时遍历三个数组,这样就可以找到最长的公共前缀了。但是后来一想,有个问题没办法解决,那就是数组中的字符串个数是不定的,也就是说数组中字符串长度是两个,我需要定义两个变量来接收这个字符串,同时也需要定义两个指针来同时遍历这两个字符串,如果数组中有三个字符串,我就需要三个变量和三个指针。
        所以我换了一个思路,我用前一个字符串和下一个字符串进行比较,比较后的结果当成新的字符串,继续和下一个待比较的字符串进行比较。这样,我们就不需要考虑字符串数组中字符串的个数了。

        代码实现

class Soultion{
	public String longestCommonPrefix(String[] strs){
		// 字符串数组为空时,返回""
		if(strs==null || strs.length<1) return "";
		// 字符串数组中只有一个元素时,返回当前元素
		if(strs.length==1) return strs[0];
		// 定义一个基准元素
		String tmp = strs[0];
		// 定义目标字符串。
		String tag = "";
		// 外层for循环控制比较次数
		for(int i = 1; i < strs.length;i++){
			int compareLength = tmp.length() > strs[i].length()? strs[i].length:tmp.length();
			// 内层for循环控制 字符串与字符串之间的比较(也就是寻找公共前缀)
			for(int j = 0; j< compareLength;j++){
				tag = "";
				// 有相同前缀的话,拼接
				if(tmp.charAt(j) == strs[i].charAt(j)){
					// 拼接
					tag += tmp.charAt(i);
				// 否则,跳出内层for循环,表示当前找到的公共前缀是最长的。
				}else{
					break;
				}
			}
			// 将当前公共前缀作为新的字符串,从而进行下一次比较。
			tmp = tag;
		}
		return tag;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值