编程题汇总,持续更新

 

//去除字符串前后的空格
function trim(str) {
    if (str && typeof str === "string") {
        return str.replace(/(^\s*)|(\s*)$/g,""); //去除前后空白符
    }
}

str1 = '   hello world   ';
console.log(trim(str1));   //hello world
    //调用原生js库trim()方法
console.log(str1.trim());  //hello world

 

// 统计字符串中字母个数或统计最多字母数
function strCount(str){
    var obj  = {};
    for(var i=0;i<str.length;i++){
        var v = str.charAt(i);
        if(obj[v] && obj[v].value == v){
            // obj[v].count = ++ obj[v].count;
             ++ obj[v].count;
        }else{
            obj[v] = {};
            obj[v].value = v;
            obj[v].count = 1;          
        }
    } 
    return obj;   
}
console.log(strCount("aaaabbbccccddfgh"));
// { a: { value: 'a', count: 4 },
//   b: { value: 'b', count: 3 },
//   c: { value: 'c', count: 4 },
//   d: { value: 'd', count: 2 },
//   f: { value: 'f', count: 1 },
//   g: { value: 'g', count: 1 },
//   h: { value: 'h', count: 1 } }

 

// 去除数组里面重叠的元素
function unique(arr){
    var newArr = [];
    for(var i=0,len=arr.length; i<len; i++){
        if(newArr.indexOf(arr[i]) == -1){
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
console.log(unique([1,2,2,2,3,3,3,4,5,6])); //[ 1, 2, 3, 4, 5, 6 ]

 

//判断是否是回文串
function isPalindrome(str) {
    str = str.replace(/\W/g, '').toLowerCase();
    return (str == str.split('').reverse().join(''));
}

console.log(isPalindrome("level"));                   // logs 'true'
console.log(isPalindrome("levels"));                  // logs 'false'
console.log(isPalindrome("A car, a man, a maraca"));  // logs 'true'

 

// 写一个sum函数使以下两种调用方式都正确。
// console.log(sum(2,3));   // Outputs 5
// console.log(sum(2)(3));  // Outputs 5
 
//方法1
function sum(x) {
  if (arguments.length == 2) {
    return arguments[0] + arguments[1];
  } else {
    return function(y) { return x + y; };
  }
}

//方法2
function sum(x, y) {
  if (y !== undefined) {
    return x + y;
  } else {
    return function(y) { return x + y; };
  }
}

 

//大数阶乘
//大整数阶乘的结果超出了导致js数值类型溢出,因此考虑用字符串保存结果来计算
 function f(n) {  
    var a = [1];  
    for (var i = 1; i <= n; i++) {  
        for (var j = 0, c = 0; j < a.length || c != 0; j++) {  
            var m = (j < a.length) ? (i * a[j] + c) : c;  
            a[j] = m % 10;  
            c = (m - a[j]) / 10;  
        }  
    }  
    return a.reverse().join("");  
}  
console.log(f(1000));  

 

posted @ 2017-07-14 10:53  gq_orange  阅读(225)  评论(0编辑  收藏  举报