解题思路

这是一个字符串处理问题。需要将输入的字符串按照指定位置分割并格式化输出。

关键点:

  1. 处理多组输入
  2. 字符串分割
  3. 格式化输出
  4. 处理边界情况

算法步骤:

  1. 读取每组输入的 和字符串
  2. 输出前 个字符(每个字符后加空格)
  3. 输出剩余的子串
  4. 处理输出格式

代码

#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()

算法及复杂度

  • 算法:字符串遍历和分割
  • 时间复杂度:,其中 是字符串长度
  • 空间复杂度:,用于存储子串