解题思路

实现字符串重复的几种方法:

  1. 常规循环
  2. 字符串乘法(Python)
  3. 字符串repeat方法(JavaScript)
  4. StringBuilder重复(Java)

关键点

  1. 一行代码实现
  2. 处理边界情况
  3. 高效字符串拼接

代码

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    // 方法1:常规循环
    string times1(string str, int num) {
        string result;
        for (int i = 0; i < num; i++) {
            result += str;
        }
        return result;
    }
    
    // 方法2:一行代码实现(使用ostringstream)
    string times2(string str, int num) {
        return string(num, '\0').replace(0, str.length() * num, str.c_str(), str.length() * num);
    }
    
    // 方法3:使用stringstream
    string times3(string str, int num) {
        ostringstream oss;
        fill_n(ostream_iterator<string>(oss), num, str);
        return oss.str();
    }
};

int main() {
    string str;
    int num;
    cin >> str >> num;
    
    Solution sol;
    // 使用任意一种方法
    cout << sol.times1(str, num) << endl;
    
    return 0;
}
import java.util.*;

public class Main {
    static class Solution {
        // 方法1:使用StringBuilder(推荐)
        public String times(String str, int num) {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < num; i++) {
                sb.append(str);
            }
            return sb.toString();
        }
        
        // 方法2:使用String.join
        public String times2(String str, int num) {
            return String.join("", Collections.nCopies(num, str));
        }
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        int num = sc.nextInt();
        
        Solution sol = new Solution();
        System.out.println(sol.times(str, num));
        
        sc.close();
    }
}
class Solution:
    # 方法1:常规循环
    def times1(self, s: str, n: int) -> str:
        result = ''
        for _ in range(n):
            result += s
        return result
    
    # 方法2:一行代码实现(字符串乘法)
    def times2(self, s: str, n: int) -> str:
        return s * n
    
    # 方法3:使用join
    def times3(self, s: str, n: int) -> str:
        return ''.join([s] * n)

def main():
    s, n = input().split()
    n = int(n)
    
    sol = Solution()
    # 使用任意一种方法
    print(sol.times2(s, n))

if __name__ == "__main__":
    main()
// 处理输入
const readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});

// 方法1:使用String.repeat
function times1(str, num) {
    return str.repeat(num);
}

// 方法2:使用Array.fill
function times2(str, num) {
    return Array(num).fill(str).join('');
}

// 方法3:使用Array.from
function times3(str, num) {
    return Array.from({length: num}, () => str).join('');
}

// 处理输入输出
rl.on('line', (line) => {
    const [str, num] = line.split(' ');
    // 使用任意一种方法
    console.log(times1(str, parseInt(num)));
    rl.close();
});

算法及复杂度

  • 算法:字符串重复
  • 时间复杂度: 为重复次数
  • 空间复杂度: 为原字符串长度