返回
从LeetCode 1374 题探讨字符串字符奇偶性
后端
2023-12-17 03:17:24
- 生成每种字符都是奇数个的字符串
题目
给你一个字符串 s
,你需要生成一个新的字符串 t
,满足 t
中每种字符出现的次数都是奇数。
返回 任意 一个满足要求的字符串 t
。
如果无法生成这样的字符串,返回一个空字符串。
示例 1:
输入:s = "lee"
输出:"lee"
解释:s 中每种字符出现的次数都是奇数,所以 s 已经是答案。
示例 2:
输入:s = "example"
输出:"eelmmp"
解释:将 s 中的字符重新排列,可以得到 "eelmmp",其中每个字符的出现次数都是奇数。
示例 3:
输入:s = "s"
输出:""
解释:无法生成每种字符出现次数都是奇数的字符串,所以返回空字符串。
提示:
1 <= s.length <= 10^5
s
由小写字母组成
解决思路
要生成一个满足要求的字符串 t
,我们需要确保以下几点:
t
中每种字符出现的次数都是奇数。t
不会包含任何不在s
中的字符。
我们可以使用一个哈希表来统计 s
中每个字符的出现次数。然后,我们可以通过以下步骤来生成 t
:
- 对于
s
中的每个字符:- 如果字符的出现次数是奇数,则将其添加到
t
中。
- 如果字符的出现次数是奇数,则将其添加到
- 如果
t
的长度与s
相同,则返回t
。 - 否则,返回一个空字符串。
实现代码
def generateTheString(s: str) -> str:
char_count = {}
for char in s:
if char not in char_count:
char_count[char] = 0
char_count[char] += 1
odd_count = 0
for count in char_count.values():
if count % 2 == 1:
odd_count += 1
if odd_count == 0:
return ""
t = ""
for char, count in char_count.items():
if count % 2 == 1:
t += char * count
return t
时间复杂度: O(n),其中 n 是字符串 s
的长度。
空间复杂度: O(n),其中 n 是字符串 s
中不同字符的个数。
总结
这道题需要我们对字符串中的字符进行统计,并根据特定规则生成一个新的字符串。通过使用哈希表和简单的迭代,我们可以有效地解决这个问题。
SEO 关键词: