开启掘金成长之旅!这是我参与「掘金日新计划 · 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;
};
说在后面
本人为算法业余爱好者,平时只是随着兴趣偶尔刷刷题,如果上面分享有错误的地方,欢迎指出,感激不尽。