生成每种字符都是奇数个的字符串

107 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第 34 天,点击查看活动详情

问题描述

给你一个整数 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"

提示:

  • 1 <= n <= 500

思路分析

首先我们要先理解一下题目的意思,题目会给我们一个整数n,我们需要返回一个含 n 个小写英文字母的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。

这里的要求只要每个字符出现的次数是 奇数次 ,并没有限制要包含的字符种类数目,所以我们可以分情况来讨论

  • n是奇数的话

如果n为奇数,那么我们可以直接返回一个包含n个字符a的字符串,这个时候字符串中有一种字符a,且a出现的次数为n,满足题目的要求。

  • n是偶数的话

如果n为偶数,那么我们可以先拼接一个字符a,这时候我们还需要在后面拼接n-1个字符,因为n为偶数,所以n-1为奇数,后面再拼接n-1个字符b即可。

这里我们可以使用字符的repeat方法来快速构造重复字符串。

AC 代码

完整代码如下:

/**
 * @param {number} n
 * @return {string}
 */
var generateTheString = function(n) {
    let res = '';
    if(n % 2 == 0){
        res += 'a';
        n--;
    }
    res += 'b'.repeat(n);
    return res;
};

说在后面

本人为算法业余爱好者,平时只是随着兴趣偶尔刷刷题,如果上面分享有错误的地方,欢迎指出,感激不尽。