一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第27天,点击查看活动详情。
题目描述
给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。
返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。
示例 1:
输入:n = 4
输出:"pppz"
解释:"pppz" 是一个满足题目要求的字符串,因为 'p' 出现 3 次,且 'z' 出现 1 次。当然,还有很多其他字符串也满足题目要求,比如:"ohhh" 和 "love"。
示例 2:
输入:n = 2
输出:"xy"
解释:"xy" 是一个满足题目要求的字符串,因为 'x' 和 'y' 各出现 1 次。当然,还有很多其他字符串也满足题目要求,比如:"ag" 和 "ur"。
示例 3:
输入:n = 7
输出:"holasss"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/generate-a-string-with-characters-that-have-odd-counts
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路分析
- 今天的算法题目是字符串处理题目,分析理解题目,给定长度为 n, 生成一个每种字符在字符串中都恰好出现奇数次。
- 因此,我们可以把 n 分成奇数和偶数分别处理。由于这是一个简单题目,我们使用最简单的解法,只返回两种字符 a 和 b,实现代码即可。
- 在Java 中,我们频繁生成字符串消耗较多,因此,我们一般使用 StringBuilder 来进行字符串生成,避免构建很多的对象。实现代码如下:
通过代码
class Solution {
public String generateTheString(int n) {
StringBuilder ans = new StringBuilder();
if (n % 2 == 0) {
for (int i = 0; i < n - 1; i++) {
ans.append("a");
}
ans.append("b");
} else {
for (int i = 0; i < n; i++) {
ans.append("a");
}
}
return ans.toString();
}
}
总结
- 上述算法的时间复杂度是O(n),空间复杂度是O(1)
- 坚持算法每日一题,加油!