function test(str){
return str.split("").reverse().join("")===str
}
var str = "12212"
console.log(test(str))
function test(str){
var temp = str.split(" ").map(function(item){
return item.split("").reverse().join("");})
return temp.join(" ")
}
var str = "I love you "
console.log(test(str))
function findMaxChar(str){
var hashTable = {}
var temp = 0
for(let i in str){
if(!hashTable[str.charAt(i)]){
hashTable[str.charAt(i)] = 1
}else{
hashTable[str.charAt(i)] += 1
}
}
//比较
for(let i in hashTable){
if(hashTable[i]>=temp){
temp = i
}
}
//返回最大字符
return temp
}
Math.floor(Math.random()*(m-n) + n)
function getRandStr(n){
var str = 'abcdefghijklmnopqrstuvwxyz9876543210'
var i = 0
var res=''
while(i<n){
res += str.charAt(Math.floor(Math.random()*str.length))
i++
}
return res
}
//方法一'i love you'
function upSent(sentence){
var sent = sentence.split(' ').map((elem,index)=>{
return elem.slice(0,1).toUpperCase()+elem.slice(1)
})
return sent.join(' ')
}
//方法二
function upSent(sentence){
//\w匹配非空格字母数字下划线,g代表全局模式
return sentence.replace(/\w+/g,function(word){
return word.slice(0,1).toUpperCase() + word.slice(1)
})
}
//第一种方法
function unique1(arr){
var res = []
for(let i=0;i<arr.length;i++){
//indexOf,O要大写
if(res.indexOf(arr[i])=="-1"){
res.push(arr[i])
}
}
return res;
}
//第二种方法,
function unique2(arr){
var res = []
var hashTable = {}
for(let i=0;i<arr.length;i++){
if(!hashTable[arr[i]]){
hashTable[arr[i]] = true
res.push[arr[i]]
}
}
return res
}
function findElem(arr){
arr = arr.sort();
var res = [];
for(let i=0;i<arr.length;i++){
if(arr[i+1] != arr[i]){
continue;
}else{
res.push(arr[i])
i++;
}
}
return res
}
function randArr(n,rangeL,rangeR){
if(rangeR<rangeL)return "rangeR need greater than rangeL"
var arr = []
for(let i=0;i<n;i++){
arr.push(Math.random()*(rangeR-rangeL) + rangeL)
}
return arr
}
function bubbleSort(arr){
var len = arr.length
var temp = 0
for(let i=0;i<len;i++){
for(let j=0;j<len-i;j++){
if(arr[j]>arr[j+1]){
temp = arr[j+1]
arr[j+1] = arr[j]
arr[j] = temp
}
}
}
return arr
}
function selectionSort(arr) {
var len = arr.length;
var minIndex, temp;
for (var i = 0; i < len - 1; i++) {
minIndex = i;
for (var j = i + 1; j < len; j++) {
if (arr[j] < arr[minIndex]) { //寻找最小的数
minIndex = j; //将最小数的索引保存
}
}
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
return arr;
}
selectionSort([3,5,2,8,9,7,6])
function insetrSort(arr){
var len = arr.length
var Idx,temp
for(let i=1;i<len;i++){
for(let j=i;j>0;j--){
if(arr[j]<arr[j-1]){
temp = arr[j-1]
arr[j-1] = arr[j]
arr[j] = temp
}
}
}
return arr
}
function getFib(n){
var fibarr = []
var i = 0
while(i<n){
if(i<=1){fibarr.push(i)}
else{fibarr.push(fibarr[i-1]+fibarr[i-2])}
i++
}
return fibarr
}
function getfib(n){
if(n>1){
return getfib(n-1)+getfib(n-2)
}else{return n}
}
3.给定一个已排序的数组和一个值val,将这个值插入数组,要求数组维持有序,返回插入位置,要求二分算法
比如:[1,3,5,7] val=2 输出1 ;[1,2,4,5] val=4 输出2
function findIdx(arr,val){
var len = arr.length;
var index;
var mid = parseInt(len/2);
//退出条件
if(len ===0){
console.log("hi")
index = 0
return index
}
if(len === 1){
val<arr[0]? index= 0 : index=1;
return index;
}
//递归条件
if(val == arr[mid]){
return mid;
}
else if(val<arr[mid]){
index = findIdx(arr.slice(0,mid),val);
}
else{
index =mid;
index += findIdx(arr.slice(mid),val);
}
return index;
}
class Node{
constructor(data,left,right){
this.data = data;
this.left = left;
this.right = right;
}
}
class BinarySearchTree{
constructor(){
this.root=null;
}
insert(data){
let n = new Node(data,null,null)
//如果没有根节点,让插入的元素变成根节点
if(!this.root){
return this.root = n;
}
let currentNode = this.root;
let parent = null;
while(true){
parentNode = currentNode
if(data<currentNode.data){
currentNode = currentNode.left;
//如果当前节点指向null,让当前节点指向n
if(currentNode === null){parentNode = n;break}
}else{
currentNode = currentNode.right;
//如果当前节点指向null,让当前节点指向n
if(currentNode === null){parentNode = n;break}
}
}
}
}