How to write palindrome in JavaScript

前端 未结 30 1793
情书的邮戳
情书的邮戳 2020-11-29 02:42

I wonder how to write palindrome in javascript, where I input different words and program shows if word is palindrome or not. For example word noon is palindrome, while bad

30条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-29 03:33

    All these loops! How about some functional goodness :) May run in to tail call issues on old/current js engines, solved in ES6

    function isPalendrome(str){
        var valid = false;
        if(str.length < 2 ) return true;
        function even(i,ii){
            str[i]===str[ii] ? ((i+1 !== ii) ? even(i+1,ii-1) : valid = true) : null
        }
        function odd(i, ii){
            str[i]===str[ii] ? ((i !== ii) ? odd(i+1,ii-1) : valid = true) : null
        }
        if(str.length % 2){
            return odd(0,str.length-1),valid;
        }else{
            return even(0,str.length-1),valid;
        }
    }
    

    To test your call stack run this code, you will be able to parse strings double the call stack size

    function checkStackSize(){
        var runs = 70000;
        var max_process = 1;
        var max = 0;
        function recurse_me() {
            max_process++;
            if(max_process === runs) return;
            max = max_process;
            try {
                recurse_me()
            } catch(e) {
                max =  max_process;
            }
        }
        recurse_me()
        console.log(max);
    }
    

    Due to the symmetrical nature of the problem you could chunk the string from the outside in and process the chunks that are within call stack limits.

    by that I mean if the palindromes length is 1000. You could join 0-250 and 750-1000 and join 250-499 with 500-749. You can then pass each chunk in to the function. The advantage to this is you could run the process in parallel using web workers or threads for very large data sets.

提交回复
热议问题