LeetCode - Valid Palindrome (判断“回文”)

来源:互联网 发布:苏联解体后俄罗斯知乎 编辑:程序博客网 时间:2024/05/18 13:05

最近在刷LeetCode,本博文题目连接:

题目如下:

解答:在提交了N多次之后,终于被Accepted。

总结:发现自己考虑的太不周全了。

1、最初时传进来的str是一个静态变量,不能进行大小写转换,后来加进了str1,str2暂存。

2、再是没有考虑空白字符串

3、考虑的停用符不够。

代码:

var isPalindrome = function (str) {        this.str = str;        var stopWords = /[\s\,\.\!\?\:\;\@\#\$\%\^\&\*\(\)\-\+\+\_\~\`\\'\\"\[\]\{\}\/\<\>\|\||\……\¥\\]/;//匹配字符,以便后面比较时跳过使用        //var isPr = str.concat(" is a palindrome.");        //var notPr = str.concat(" is not a palindrome.");        //考虑空字符串时的情况        if (/^[\s*]$/.test(str)) {            if (str.length === 1) return true;            else if (str.length % 2 === 0)                return isPr;                //return true;            else                return notPr;                //return false;        }        //非空字符串情况        while (i <= j) {            if (stopWords.test(str[i])) {//若i是stopWords里的符号时,跳过                i++;            }            if (stopWords.test(str[j])) {//若j是stopWords里的符号时,跳过                j--;            }            if (!stopWords.test(str[i]) && !stopWords.test(str[j])) {//进行比较                var str1, str2;                if (/[A-Z]/.test(str[i])) {//如果str[i]为大写字母,则转换成小写                    str1 = str[i].toLowerCase();                } else { str1 = str[i]; }                if (/[A-Z]/.test(str[j])) {//如果str[j]为大写字母,则转换成小写                    str2 = str[j].toLowerCase();                } else { str2 = str[j]; }                if (str1 === str2) {//转换后的字符进行比较                    i++;                    j--;                }else {break; }            }        }        if (i > j)            //return isPr;            return true;        else            //return notPr;            return false;    };



结果展示:


完毕。

0 0
原创粉丝点击