解题思路
实现字符串重复的几种方法:
- 常规循环
- 字符串乘法(Python)
- 字符串repeat方法(JavaScript)
- StringBuilder重复(Java)
关键点
- 一行代码实现
- 处理边界情况
- 高效字符串拼接
代码
#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();
});
算法及复杂度
- 算法:字符串重复
- 时间复杂度:, 为重复次数
- 空间复杂度:, 为原字符串长度