leetcode之Longest Common Prefix的js实现

本文介绍了一种用于查找字符串数组中所有元素的最长公共前缀的算法,并提供了详细的实现思路与JavaScript代码示例。

原题在这里

老规矩,还是先简单翻译一下。

查找指定字符串数组每个元素的最长相同前缀。如果没有相同的前缀,那么返回""。

举个例子:

Input: ["flower","flow","flight"]
Output: "fl"
Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.

注意:指定的字符串数组元素由小写a-z构成。


解题思路:

我们假设有这样一个游标p,p指向字符串数组arr的每个元素下标为p的字符。最开始,p从0开始,如果arr[0].chatAt(p) != arr[n].charAt[p],那么返回arr[0].substring(0,p),或者arr[n].length <= p,那么返回arr[n];否则的话,p+1,递归处理。代码如下:

function longest_common_prefix(str_array,pointer){

	var target = str_array[0];
	if(pointer >= target.length){
	   return target;
	}
    for (var i = 1; i < str_array.length; i++) {
    	var str = str_array[i]
    	if(pointer >= str.length){
    	   return str.substring(0,pointer);
    	}else{
    	   var target_char = target.charAt(pointer);
    	   var current_char = str.charAt(pointer);
    	   if(target_char != current_char){
    	   	  return target.substring(0,pointer);
    	   }
    	}	
    }
    return longest_common_prefix(str_array,pointer+1);
}

var str_array = ["a","adecar","a"]
console.log(longest_common_prefix(str_array,0));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值