题目:leetcode-409
要求:
给定一个包含大写字母和小写字母的字符串 s
,返回 通过这些字母构造成的 最长的 回文串 的长度。
在构造过程中,请注意 区分大小写 。比如 "Aa"
不能当做一个回文字符串。
示例 1:
输入:s = "abccccdd" 输出:7 解释: 我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。
示例 2:
输入:s = "a" 输出:1 解释:可以构造的最长回文串是"a",它的长度是 1。
思路:题目求给定字符串中可以构造出来的最长回文串,回文串是由回文中心以及其他字符对构成,且回文中心的数量可为0或1,第一种情况回文串由字符串对构成(回文中心没有)第二钟情况回文串由一个回文中心和其他字符串对构成(回文中心由一个字符构成)则用map、set可做。
题解:
function countsubstring(str){let res = 0;
let map = new Map();
for(let i = 0;i<str.length;i++){
if(map.get(str[i)){
map.delete(str[i])
res+=2;
}
else {map.set(str[i],1)}
}
return map.size ? res+1 : res;
}