每日一题:1374. 生成每种字符都是奇数个的字符串

116 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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();
    }
}

耗时结果

6c6ac4bc0418575bd216fa6f4426a3d.png

总结

这道简单题看题解时发现有个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";
    }
}