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