Leetcode day2

【题目的意思】

在字符串中截取一个子串,子串中没有相同的字符,在所有这样的子串中找出最长的子串,返回该子串长度

【我的方法】

用循环先找出没有没有相同的字符的子串,存储到result‘’中,得到长度sum,并清空存储到result‘’,找到下一个子串时,如果长度大于sum,则更新sum

【技巧】

 由于要不断的判断下一个字符是否在子串中存在,可以使用Indexof()函数

转自indexOf()、lastIndexOf()、includes()之间的区别_海底人123的博客-CSDN博客

【code】

	/**
			 * @param {string} s
			 * @return {number}
			 */
		var lengthOfLongestSubstring = function(s) {
			l = s.length
			result = ''//存放子串
			var sum = 0//子串长度
			
			if(l == 0){
				sum = 0
			}
			else if(s==" "||l == 1){//最后写完居然还说""返回0 ,但是" "返回1,没办法,只能再写个if
					sum =1
				}
			
			else{
				for(var i = 0 ; i < l ; i++){//第一层循环,指针i指向子串的第一个元素,并且第一个字母一定可以放到result中
					result+=s[i]
					for( var j = i+1 ;j < l ; j++){//第二层循环,j不断右移
						var flag = result.indexOf(s[j])//先判断s[j]不是子串中已有的的元素
						result = ( flag >=0)? result:result+=s[j]//如果s[j]不是子串中已有的的元素,则加入子串result,是的话result不变
						if(result.length>sum){//result更新一次,都要判断长度变化
								sum = result.length
							}
						
						if(flag >=0 || j == l-1){//s[j]是子串中已有的的元素,result清空,进行下一个i的循环,当然如果j已经指向s最后一个字母,也要结束循环
							
							
							result = ''
							break;
						}
						
						
					}
				
				}
			};
			
			return sum	
			}
			 s ="c"
			console.log(lengthOfLongestSubstring(s))

【结果】

【初学js,方法也不是很完美,希望多多指教啦~】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值