2 条题解

  • 0
    @ 2026-6-19 23:00:30
    #include<iostream>
    #include<string>
    using namespace std;
    int main(){
        string s;
        cin>>s;
        for(int i=0;i<=s.size()-1;i++){
        	cout<<s[i];
        	if(i==s.size()-1)break;
        	else cout<<' ';
    	}
        return 0;
    }
    
    • 0
      @ 2026-6-19 10:30:43

      📝 题目大意

      给定一个由大写英文字母组成的字符串 SS,将 SS 的每个字符用空格分隔后按顺序输出,末尾不输出多余空格。

      💡 解题思路

      1. 题目分析SS 长度 2S1002 \le |S| \le 100,全为大写字母,数据范围极小,直接模拟即可。
      2. 算法推导:遍历字符串 SS 的每个字符,对于下标 ii,若 i>0i > 0 则先输出一个空格,再输出 S[i]S[i]。这样第一个字符前不会输出空格,最后一个字符后也不会输出多余空格。
      3. 边界与细节:唯一需要注意的是最后一个字符后面不能有空格,标准代码通过"先输出空格再输出字符(除第一个字符外)"的方式自然规避了该问题。

      ⏱️ 复杂度分析

      • 时间复杂度O(S)O(|S|),遍历字符串一次。
      • 空间复杂度O(S)O(|S|),存储输入字符串。

      💻 标准代码 (C++)

      #include <iostream>
      #include <string>
      using namespace std;
      int main() {
          string S;
          cin >> S;
          for (int i = 0; i < S.length(); i++) {
              if (i > 0) cout << " "; // 除第一个字符外,每个字符前输出一个空格
              cout << S[i];           // 输出当前字符
          }
          cout << endl;               // 输出换行
          return 0;
      }
      
      • 1

      信息

      ID
      748
      时间
      1000ms
      内存
      256MiB
      难度
      10
      标签
      (无)
      递交数
      2
      已通过
      2
      上传者