1、输出字符串中出现最多字符的次数
var lengthOfLongestSubstring = function(s) {
var numArr = []
for(let i=0; i<s.length;i++) {
numArr.push({num: (s.split(s[i])).length-1, name: s[i]})
}
var max = Math.max.apply(null, numArr.map(item => { return item.num }));
console.log('max', max)
};
lengthOfLongestSubstring('jhdoiweesdds') // 3
2、两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
var twoSum = function(nums, target) {
var arr = [];
nums.forEach((item1, index1) => {
nums.forEach((item2, index2) => {
if ((item1 + item2) == target) {
if (arr.indexOf(index1) == -1 && index1!=index2) {
arr = [index1, index2];
}
}
})
})
return arr;
};
3、给定一个字符串,找出其中不含有重复字符的 最长子串 的长度。
var num = 0, currentStr = ''
for (var i = 0; i < s.length; i++) {
var currentNode = s.charAt(i)
var repeatIndex = currentStr.indexOf(currentNode)
if (repeatIndex === -1) {
currentStr += currentNode
num = num > currentStr.length? num : currentStr.length
} else {
currentStr = currentStr.substr(repeatIndex + 1) + currentNode
}
}
return num
4、输出最长回文字符串
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
var len = s.length
var maxStr = ''
for (var i = 0; i < len; i++) {
for (var j = i + 1; j <= len; j++) {
var str = s.slice(i, j)
var reverceStr = str.split('').reverse().join('')
if (str === reverceStr) {
maxStr = maxStr.length > str.length ? maxStr : str
}
}
}
return maxStr
};