解题思路
这是一个字符串处理问题。需要将输入的字符串按照指定位置分割并格式化输出。
关键点:
- 处理多组输入
- 字符串分割
- 格式化输出
- 处理边界情况
算法步骤:
- 读取每组输入的 和字符串
- 输出前 个字符(每个字符后加空格)
- 输出剩余的子串
- 处理输出格式
代码
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
void processString(int n, const string& s) {
// 输出前n-1个字符
for (int i = 0; i < n - 1; i++) {
cout << s[i] << " ";
}
// 输出剩余子串
string remaining = s.substr(n - 1);
cout << remaining << " " << endl;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
string s;
Solution solution;
// 处理多组输入
while (cin >> n) {
cin >> s;
solution.processString(n, s);
}
return 0;
}
import java.util.*;
class Solution {
public void processString(int n, String s) {
// 输出前n-1个字符
for (int i = 0; i < n - 1; i++) {
System.out.print(s.charAt(i) + " ");
}
// 输出剩余子串
String remaining = s.substring(n - 1);
System.out.println(remaining + " ");
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Solution solution = new Solution();
// 处理多组输入
while (sc.hasNext()) {
int n = sc.nextInt();
String s = sc.next();
solution.processString(n, s);
}
sc.close();
}
}
class Solution:
def process_string(self, n: int, s: str) -> None:
# 输出前n-1个字符
for i in range(n - 1):
print(s[i], end=" ")
# 输出剩余子串
remaining = s[n-1:]
print(f"{remaining} ")
def main():
solution = Solution()
# 处理多组输入
while True:
try:
n = int(input())
s = input()
solution.process_string(n, s)
except EOFError:
break
if __name__ == "__main__":
main()
算法及复杂度
- 算法:字符串遍历和分割
- 时间复杂度:,其中 是字符串长度
- 空间复杂度:,用于存储子串