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

approach 1,模拟题

class Solution {
    public String generateTheString(int n) {
        StringBuilder res = new StringBuilder();
        for (int i = 0; i < n-1; i++) {
            res.append('a');
        }
        if (n % 2 == 0) {
            res.append('b');
        } else {
            res.append('a');
        }
        return res.toString();
    }
}

代码逻辑还可以做一定优化,循环完还需要判断显然比较麻烦,可以将n先减一,去做一次奇偶判断,最后在while整个剩下的n。

class Solution {
    public String generateTheString(int n) {
        StringBuilder res = new StringBuilder();
        if ((n & 1) == 0 && --n >= 0) res.append('a');
        while (n-- > 0) {
            res.append('b');
        }
        return res.toString();
    }
}

利用jdk11提供的String.repeat函数,简化代码同时也能提升性能

class Solution {
    public String generateTheString(int n) {
        StringBuilder res = new StringBuilder();
        if (n % 2 == 0) return res.append("a".repeat(n-1)).append('b').toString();
        return res.append("a".repeat(n)).toString();
    }
}
Last Updated:
Contributors: jesse