Java&C++题解与拓展——leetcode1374.生成每种字符都是奇数的字符串【么的新知识】

59 阅读1分钟
每日一题做题记录,参考官方和三叶的题解

题目要求

image.png

思路:模拟

  • 没有要求字母种类数目,所以就直接最简单的思路
    • 给定nn为奇数则直接用一种字母;
    • 偶数则两种字母,其中一种一个另一种n1n-1

Java

class Solution {
    public String generateTheString(int n) {
        StringBuilder sb = new StringBuilder();
        if (n % 2 == 0 && --n >= 0)
            sb.append('r');
        while (n-- > 0)
            sb.append('v');
        return sb.toString();
    }
}
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(n)O(n),不计返回值为O(1)O(1)

C++

class Solution {
public:
    string generateTheString(int n) {
        if (n % 2 == 1)
            return string(n, 'v');
        return string(n - 1, 'v') + 'r';
    }
};
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(n)O(n),不计返回值为O(1)O(1)

Rust

一行结束

impl Solution {
    pub fn generate_the_string(n: i32) -> String {
        format!("r{}", (vec!["v", "r"][n as usize % 2..(n as usize % 2) + 1].join("")).repeat(n as usize - 1))
    }
}
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(n)O(n),不计返回值为O(1)O(1)

总结

浪了一个多月回来接着刷题,从简单模拟开始~

【要慢慢填填之前的算法坑了……


欢迎指正与讨论!