跳到主要内容

125.验证回文串

链接:125.验证回文串
难度:Easy
标签:双指针、字符串
简介:我们从二叉树的根节点 root  开始进行深度优先搜索。在遍历中的每个节点处,我们输出  D  条短划线(其中  D  是该节点的深度),然后输出该节点的值。(如果节点的深度为 D,则其直接子节点的深度为 D + 1。根节点的深度为 0)。如果节点只有一个子节点,那么保证该子节点为左子节点。给出遍历输出  S,还原树并返回其根节点  root。

题解 1 - 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('');
}

题解 2 - 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;
}
};