自己从0到1的思路,仅供参考:
一:无重复字符的最长子串
var lengthOfLongestSubstring = function(s) {
var s1 = ''
var s2 = ''
var l = 0
while(l < s.length) {
for(var i=l;i<s.length;i++){
if(!s1.includes(s[i])){
s1 += s[i]
} else {
++l
if(s1.length > s2.length) {
s2 = s1
s1 = ''
} else {
s1 = ''
}
break
}
}
}
return s2.length
};
二:寻找两个正序数组的中位数
var findMedianSortedArrays = function(nums1, nums2) {
var arr = nums1.concat(nums2)
arr.sort((a,b) => {
if(a-b > 0) {
return 1
} else {
return -1
}
})
if(arr.length % 2 === 0) {
var num = (arr[arr.length / 2 -1] + arr[arr.length / 2])/2
return num
} else {
var num = arr[Math.floor(arr.length / 2)]
return num
}
};
三:字符串转换整数
var myAtoi = function(s) {
var n1 = s.trimStart()
if((!(/^\d+/).test(n1) || (/ \+ | \- /g).test(s)) && !(/^\d/).test(n1[1])){
return 0
}
if(s.length<=1 && (s === '-' || s === '+')) {
return 0
}
if((/\d|\+/g).test(n1[0])){
var n2 = n1.match(/(\d+)/g)[0]
// 判断临界
if(Number(n2) > (Math.pow(2, 31) - 1)) {
return Math.pow(2, 31) - 1
}
return Number(n2)
} else if(n1[0] === '-') {
var n2 = n1.split(/\-/g)[1].trimStart()
// 如果字符串第一个字符是数字
if((/\d/g).test(n2[0])){
var n3 = n2.match(/(\d+)/g)[0] //匹配正负数,取第一组数字
// 判断临界
if(-Number(n3) < Math.pow(-2, 31)) {
return Math.pow(-2, 31)
}
return -Number(n3)
} else {
return 0
}
} else {
return 0
}
};