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

Raphael Liu Lv10

给你一个整数 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 个 `a’ 组成的字符串。

当 n 为偶数时,我们返回 n-1 个 a' 和一个 b’ 组成的字符串。

代码

[sol1-C++]
1
2
3
4
5
6
7
8
9
class Solution {
public:
string generateTheString(int n) {
if (n % 2 == 1) {
return string(n, 'a');
}
return string(n - 1, 'a') + 'b';
}
};
[sol1-Java]
1
2
3
4
5
6
7
8
9
class Solution {
public String generateTheString(int n) {
StringBuffer sb = new StringBuffer();
if (n % 2 == 1) {
return sb.append("a".repeat(n)).toString();
}
return sb.append("a".repeat(n - 1)).append("b").toString();
}
}
[sol1-C#]
1
2
3
4
5
6
7
8
9
public class Solution {
public string GenerateTheString(int n) {
StringBuilder sb = new StringBuilder();
if (n % 2 == 1) {
return new string('a', n);
}
return new string('a', n - 1) + "b";
}
}
[sol1-Python3]
1
2
3
4
5
class Solution:
def generateTheString(self, n: int) -> str:
if n % 2 == 1:
return "a" * n
return "a" * (n - 1) + "b"
[sol1-C]
1
2
3
4
5
6
7
8
9
10
char * generateTheString(int n) {
char * ans = (char *)malloc(sizeof(char) * (n + 1));
memset(ans, 'a', sizeof(char) * n);
ans[n] = '\0';
if (n % 2 == 1) {
return ans;
}
ans[n - 1] = 'b';
return ans;
}
[sol1-Golang]
1
2
3
4
5
6
func generateTheString(n int) string {
if n%2 == 1 {
return strings.Repeat("a", n)
}
return strings.Repeat("a", n-1) + "b"
}
[sol1-JavaScript]
1
2
3
4
5
6
7
var generateTheString = function(n) {
const sb = '';
if (n % 2 === 1) {
return sb + 'a'.repeat(n);;
}
return sb + 'a'.repeat(n - 1) + 'b';
};

复杂度分析

  • 时间复杂度:O(n)。

  • 空间复杂度:O(1)。这里不计入返回值需要的空间。

 Comments
On this page
1374-生成每种字符都是奇数个的字符串