125.验证回文串
链接:125.验证回文串
难度:Easy
标签:双指针、字符串
简介:我们从二叉树的根节点 root 开始进行深度优先搜索。在遍历中的每个节点处,我们输出 D 条短划线(其中 D 是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出 S,还原树并返回其根节点 root。
题解 1 - cpp
- 编辑时间:2022-02-18
- 执行用时:8ms
- 内存消耗:7MB
- 编程语言:cpp
- 解法介绍:双指针遍历。
class Solution {
   public:
    bool isPalindrome(string s) {
        if (s == " ") return 1;
        int l = 0, r = s.size() - 1;
        char lc, rc;
        while (l < r) {
            do {
                lc = tolower(s[l++]);
            } while (l < s.size() && !isdigit(lc) && !isalpha(lc));
            do {
                rc = tolower(s[r--]);
            } while (r >= 0 && !isdigit(rc) && !isalpha(rc));
            if (l < s.size() && r >= 0 && lc != rc) return 0;
        }
        return 1;
    }
};
题解 2 - typescript
- 编辑时间:2020-06-19
- 执行用时:96ms
- 内存消耗:46.8MB
- 编程语言:typescript
- 解法介绍:利用字符串转数组后过滤获取所需字符进行判断。
function isPalindrome(s: string): boolean {
  const arr = s
    .toLowerCase()
    .split('')
    .filter(v => /d|w/.test(v));
  return arr.join('') === arr.reverse().join('');
}