判断字符串是否是回文:运用栈&reverse()

一、运用栈

    function Stack() {
        this.dataStore = [];
        this.top = 0;//top的值等同于数组内的元素个数
        this.push = push;
        this.pop = pop;
    }
    function push(element) {
        this.dataStore[this.top++] = element;
    }
    function pop() {
        return this.dataStore[--this.top];
    }

    function isPalindrome(word) {
        var s = new Stack();//新建栈,以便将数组中的元素压入栈
        for ( var i = 0; i < word.length; ++i) {
            s.push(word[i]);
        }
        var rword = "";
        while (s.top > 0) {
            rword += s.pop();//将新栈中的元素通过pop()方法翻转
        }
        if (word == rword) {
            return true;
        } else {
            return false;
        }
    }
    var word = "hello";
    if (isPalindrome(word)) {
        alert(word + " is a palindrome.");
    } else {
        alert(word + " is not a palindrome.");
    }
     word = "racecar";
    if (isPalindrome(word)) {
        alert(word + " is a palindrome.");
    } else {
        alert(word + " is not a palindrome.");
    } 

 二、间接使用数组的reverse()方法

     function isPalindrome(word) {
        var a = word.split("");//将字符串转化为数组,split()中""必不可少
        var b = a.join();//将数组转化为字符串
        var a1 = a.reverse();
        var b1 = a1.join();
        if (b == b1) {//字符串可以运用"==",数组不可以
            return true;
        } else {
            return false;
        }
    }
    var word = "hello";
    if (isPalindrome(word)) {
        alert(word + " is a palindrome.");
    } else {
        alert(word + " is not a palindrome.");
    } 
    word = "racecar";
    if (isPalindrome(word)) {
        alert(word + " is a palindrome.");
    } else {
        alert(word + " is not a palindrome.");
    } 

 

posted @ 2016-04-09 21:59  绯乐  阅读(1970)  评论(0编辑  收藏  举报