409. 最长回文串
给定一个包含大写字母和小写字母的字符串 s
,返回 通过这些字母构造成的 最长的回文串 。
在构造过程中,请注意 区分大小写 。比如 "Aa"
不能当做一个回文字符串。
示例 1:
1 | 输入:s = "abccccdd" |
示例 2:
1 | 输入:s = "a" |
示例 3:
1 | 输入:s = "bb" |
提示:
1 <= s.length <= 2000
s
只能由小写和/或大写英文字母组成
思路:
回文串说到底只有两种情况:
- aa
- aba
也就是说构成回文串的两种情况有:
- 所有字符出现的次数都是双数,对应情况1。
- 除某个字符出现的次数为单数,其余所有字符出现的次数都为双数,对应情况2。
所以就可以使用集合进行存储字符串中的字符,因为集合中的元素具有不可重复的特性,可以用于统计字符串中字符出现的次数。
将字符串中的字符依次存入集合
- 如果集合中已经存在该元素,则当前字符与集合中的字符构成一对回文串,结果值加一,移除集合中该元素。
- 如果不存在该元素,则直接将其存入集合,以便与之后的字符进行匹配。
代码:
1 |
|