【LeetCode】生成每种字符都是奇数个的字符串Java题解

117 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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();
    }
}

image.png

总结

  • 上述算法的时间复杂度是O(n),空间复杂度是O(1)
  • 坚持算法每日一题,加油!