跳至主要內容

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


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

🟢   🔖  字符串  🔗 力扣open in new window LeetCodeopen in new window

题目

Given an integer n, return a string withn characters such that each character in such string occurs an odd number of times.

The returned string must contain only lowercase English letters. If there are multiples valid strings, return any of them.

Example 1:

Input: n = 4

Output: "pppz"

Explanation: "pppz" is a valid string since the character 'p' occurs three times and the character 'z' occurs once. Note that there are many other valid strings such as "ohhh" and "love".

Example 2:

Input: n = 2

Output: "xy"

Explanation: "xy" is a valid string since the characters 'x' and 'y' occur once. Note that there are many other valid strings such as "ag" and "ur".

Example 3:

Input: n = 7

Output: "holasss"

Constraints:

  • 1 <= n <= 500

题目大意

给你一个整数 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'a' 组成的字符串(每个字符的出现次数为奇数)。
    • 如果 n偶数,返回由 n-1'a' 和 1 个 'b' 组成的字符串('a' 的出现次数为奇数,'b' 的出现次数也为奇数)。
  • 使用字符串的 .repeat() 方法快速生成指定长度的字符串。

复杂度分析

  • 时间复杂度O(n),使用 .repeat() 方法生成字符串,复杂度为 O(n)
  • 空间复杂度O(n),返回的结果字符串占用 O(n) 的空间。

代码

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