携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
每天上班摸着鱼,更着文。今天的每日一题属实是过于舒适。
前言
[1374. 生成每种字符都是奇数个的字符串]【简单题】,今天leetcode休息日简直是。
审题
给你一个整数 n,请你返回一个含 n 个字符的字符串,其中每种字符在该字符串中都恰好出现 奇数次 。
返回的字符串必须只含小写英文字母。如果存在多个满足题目要求的字符串,则返回其中任意一个即可。 示例 1: 输入:n = 4 输出:"pppz" 解释:"pppz" 是一个满足题目要求的字符串,因为 'p' 出现 3 次,且 'z' 出现 1 次。当然,还有很多其他字>符串也满足题目要求,比如:"ohhh" 和 "love"。
这题思路我是根据简单数学计算 奇数 + 奇数 = 偶数,所以题目中如果n是个偶数,那么我直接配一个奇+奇即可,然后题目也没有要求字母用什么去表示,所以那我直接奇数个一样的加上一个不一样的那就是偶数个了,这不简简单单。然后还有个n如果是个奇数,那直接重复单词写完长度就行。
编码
class Solution {
public String generateTheString(int n) {
StringBuilder sb = new StringBuilder();
if (n % 2 == 0) {
for (int i = 0; i < n; i++) {
if (i == n - 1){
sb.append('y');
continue;
}
sb.append('x');
}
}else{
for (int i = 0; i < n; i++) {
sb.append('x');
}
}
return sb.toString();
}
}
耗时结果
总结
这道简单题看题解时发现有个dalao的写法直接一句写完了,摘抄过来给大家看一下,Java的[String.repeat(int)]方法是Java(随JDK 11 [引入]),主要用法将原来的字符重复n次,刚好跟这题相吻合所以直接一拍即合,用该方法来做一行搞定,还得是解答区的dalao写法妙啊。
class Solution {
public String generateTheString(int n) {
return (n & 1) > 0 ? "a".repeat(n) : "a".repeat(n - 1) + "b";
}
}