2 条题解

  • 0
    @ 2026-10-24 13:53:17
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n,j = 0;
        cin >> n;
        string s;
        cin >> s;
        for (int i = 0;i < s.size() - 1; i++)
        {
            if (s[i] == s[i+1])
            {
                j++;
            }
        }
        cout << j << endl;
    }
    //啦啦啦
    
    • 0
      @ 2026-10-23 18:34:01

      P76005 相邻相同字符 — 题解

      专题: 字符串
      适用题目: 新生 OJ 本地题包中的 P76005,不要直接用于外站同名题。

      解题思路

      从第二个字符开始,只比较当前位置与前一个位置,满足相等就加一。

      复杂度

      时间 O(n)O(n),额外空间 O(1)O(1)。

      易错点

      统计的是相同的相邻对,不是需要删除的字符种类数。

      C11 参考程序

      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #include <ctype.h>
      #include <limits.h>
      
      int main(void) {
          int n, ans = 0; static char s[100005];
          scanf("%d%100004s", &n, s);
          for (int i = 1; i < n; i++) ans += s[i] == s[i-1];
          printf("%d\n", ans);
          return 0;
      }
      

      C++17 参考程序

      #include <bits/stdc++.h>
      using namespace std;
      using ll = long long;
      #define nl '\n'
      
      int main() {
          ios::sync_with_stdio(false);
          cin.tie(nullptr);
          int n;
          string s;
          cin>>n>>s;
          int ans=0;
          for(int i=1;i<n;i++)ans+=s[i]==s[i-1];
          cout<<ans<<nl;
          return 0;
      }
      

      题解建议设置为训练结束后开放。普通判题无法验证是否实际使用指定函数或 STL。

      • 1

      信息

      ID
      1774
      时间
      2000ms
      内存
      256MiB
      难度
      1
      标签
      提交数
      1
      已通过
      1
      上传者