力扣题库之最长公共前缀

最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。

-基本上每一步都有解释了,一些易错的地方我一般都用console.log()在控制台查看了,这些地方可以多注意

// 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。所有输入只包含小写字母 a-z 。
			//输入的是字符串数组,所以要先遍历数组,将字符串全部取出
			var longestCommonPrefix = function(arr) {
				//将数组第一个字符串选作为要与后面字符串比较的字符串,只要该字符串的每一项与后面每个字符串对应项的字符一样,那么这就是要求的公共前缀
				
				//如果该数组为空,那么直接返回''
				if(arr.length == 0){
					return ''
				}
				//循环遍历出每一项的长度
				var arr_length = []
				for( var k = 0 ; k <arr.length ; k++){					
					arr_length.push(arr[k].length)
					// console.log(arr_length)
				}
				//将长度排序
				arr_length.sort()
				//取出第一项,即长度最短的那个数
				var num = arr_length[0]
				// console.log(num)
				//创建一个装入公共前缀的空字符串
				var newArr = [];
				//创建装入j的值的数组
				var arr_j = []
					//遍历从下标为1开始的每一个字符串
					for (var i = 1; i < arr.length; i++) {
						//遍历每一个字符串的每一位,进入下一步判断,每一个字符串的对应下标的字符是否与第一项相同
						for (var j = 0; j < num; j++) {
							//遍历第一个字符串的每一项
							// console.log(i,j)							
							//此时 j 的最小值就为公共前缀的位数
							if (arr[0][j] !== arr[i][j]) {	
								break;
							}
						}
						arr_j.push(j)						
					}
					for( var z = 0 ; z < arr_j.length - 1 ; z ++){
						//for循环找到其他的数据项
						for( var x = z + 1 ;x <arr_j.length ;x ++){
							//判断大小
							if(arr_j[z] > arr_j[x]){
								//换位
								var temp = arr_j[z];
								arr_j[z] = arr_j[x];
								arr_j[x] = temp
							}
						}
					}
					var j_min = arr_j[0];
					// console.log(j_min)
				newArr.push(arr[0].substring(0,j_min))
				console.log(newArr)
				if (newArr.length != 0){
					return newArr.toString()
				}
				return ''
			};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值