「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战」
LeetCode409.最长回文字符串
题目要求
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010
示例
输入:"abccccdd"
输出:7
解释:我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
思路
1.新建一个map,每次循环字符串,判断map里面是否包含这个字符串,如果不包含就add进去,如果包含就删除这个字符串并且,把统计回文字符串的长度+2
let map = new Set()
let res = 0
for (let i = 0
if (map.has(s[i])) {
res += 2
map.delete(s[i])
} else {
map.add(s[i])
}
}
2.最后统计一下map的size值如果大于等于1的话,可以把这个值放入回文字符串的中间(单身汉只允许有一个!!!)
if (map.size >= 1) {
res++;
}
完整代码
var longestPalindrome = function(s) {
let map = new Set()
let res = 0
for (let i = 0
if (map.has(s[i])) {
res += 2
map.delete(s[i])
} else {
map.add(s[i])
}
}
if (map.size >= 1) {
res++
}
return res
}