双指针:回文字符串(680)
所谓的回文字符串,是指具有左右对称特点的字符串,例如 "abcba" 就是一个回文字符串。
Input: "abca"
Output: True
Explanation: You could delete the character 'c'.
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
var validPalindrome = function (s) {
let indexLeft = 0
let indexRight = s.length - 1
while (indexLeft <= indexRight) {
if (s[indexLeft] !== s[indexRight]) {
if (isSymmetric(s.slice(indexLeft, indexRight))) {
return true
} else {
if (isSymmetric(s.slice(indexLeft + 1, indexRight + 1))) {
return true
} else {
return false
}
}
} else {
indexLeft++
indexRight--
}
}
return true
function isSymmetric(s1) {
let Left = 0
let Right = s1.length - 1
while (Left <= Right) {
if (s1[Left] === s1[Right]) {
Left++
Right--
} else {
return false
}
}
return true
}
};
js第一次写出的解法,思路:先比较两端是否相等,删除一端一个元素后再用函数判断是否是对称的
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
#python3
class Solution:
def validPalindrome(self, s: str) -> bool:
if s==s[::-1]:
return True
left,right=0,len(s)-1
while left<=right:
if s[left]==s[right]:
left+=1
right-=1
else:
a,b=s[left+1:right+1],s[left:right]
print(a,b)
return a==a[::-1] or b==b[::-1]
主要思路:判断是否对称就是把字符串倒过来看是否相等,采用s==s[::-1]正反向字符串对称做判定,后采用双指针来做切片删除处理
(完)
0条看法
最新最后最热
等待你的评论