判断一个字符串是不是回文字符串
// 思路1 直接判断翻转后的字符串数组是否等于原数组
// 缺点:不能判断非顺序的回文
function checkPalindrom(str) {
return str == str.split('').reverse().join('');
}
// 思路2 将字符串转化成字符串数组,将每位进行计数
// 回文成立:无奇数次、有且仅有一个奇数次
// 回文不成立:两次或多次奇数次
function flatten() {
// 数组扁平化
var arr = [].concat.apply([], arguments);
// 去重
var arr = Array.from(new Set(arr));
// 排序
var arr = arr.sort(sortArr)
return arr;
}
// 排序
function sortArr(a, b) {
return a - b;
}
function findMaxDuplicateChar(str) {
if (str.length == 1) {
return str;
}
let charObj = {};
for (let i = 0; i < str.length; i++) {
if (!charObj[str.charAt(i)]) {
charObj[str.charAt(i)] = 1;
} else {
charObj[str.charAt(i)] += 1;
}
}
let maxChar = '',
maxValue = 1;
for (var k in charObj) {
if (charObj[k] >= maxValue) {
maxChar = k;
maxValue = charObj[k];
}
}
console.log("出现的最大次数", maxValue);
// 出现次数最多的元素
return maxChar;
}
function getMaxProfit(arr) {
var minPrice = arr[0];
var maxProfit = 0;
for (var i = 0; i < arr.length; i++) {
var currentPrice = arr[i];
minPrice = Math.min(minPrice, currentPrice);
var potentialProfit = currentPrice - minPrice;
maxProfit = Math.max(maxProfit, potentialProfit);
}
return maxProfit;
}
// 方案A:利用加法
a = a + b ;
b = a - b ;
a = a - b ;
// 方案B:利用乘积
a = a * b ;
b = a / b ;
a = a / b ;
// 方案C:利用数组
a = [a, b];
b = a[0];
a = a[1];
// 方案D:利用与或
a = a ^ b;
b = a ^ b;
a = a ^ b;
var Test = {
foo: "test",
func: function () {
var self = this;
console.log(this.foo);
console.log(self.foo);
(function () {
console.log(this.foo);
console.log(self.foo)
})()
}
}
// 求打印结果
Test.func(); // test test undefined test
下列代码返回true的有:
[1,2,3,4,5].map(Number); // [1,2,3,4,5]
[1,2,3,4,5].forEach(Number); // undefined
[1,2,3,4,5].some(Number); // true
[1,2,3,4,5].every(Number); // true
function quickSort(arr){
// 判断长度
// len < 1 return 本身
// len > 1 进行快速排序
if(arr.length < 1){
return arr;
}
// 找出中位数(基数)
let pivotIndex = Math.floor(arr.length / 2);
// 找出中位数
let pivot = arr.splice( pivotIndex , 1 )[0];
// 创建左右数组容器
let left = [];
let right = [];
// 进行快排 小放左 大放右
for(let i = 0 ; i < arr.length ; i++){
if(arr[i]<pivot){
left.push(arr[i]);
}else{
right.push(arr[i]);
}
}
// 将完成的数组进行递归
return quickSort(left).concat([pivot] , quickSort(right));
}
var lengthOfLongestSubstring = function (s) {
// 创建一个长度和一个新的字符串
let len = 0; // 新长度索引 用来记录新子串长度
let str = ''; // 新子串 用来记录连续的新子串
// 匹配字符 存在就拼接 不存在则剔除 从后一段截取
for (let i = 0; i < s.length; i++) {
// 判断 新子串 是否含有遍历元素
// -1 为不存在
if (str.indexOf(s[i]) === -1) {
str = str + s[i];
if (str.length > len) {
len = str.length;
}
} else {
str = str + s[i];
let index = str.indexOf(s[i]);
str = str.slice(index + 1);
}
}
return len;
};
// 采用冒泡比较两数之和
var twoSum = function (nums, target) {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; i < nums, length; i++) {
if (nums[i] + nums[j] === target) {
return [i, j];
}
}
}
}