水题 codeforces 266A Stones on the Table (i--)
水题 很简单 但是没有一发过 记录下来
思路:直接遍历一遍即可
code:
#include<iostream>
#include<stdio.h>
#include<string>
#include<algorithm>
#include <iterator>
#include<queue>
#include<functional>
using namespace std;
priority_queue<int, vector<int>, greater<int>>q;
int main()
{
int n;
cin >> n;
string s;
cin >> s;
int ans = 0;
for (int i = 1; i < s.size(); ++i) {
if (s[i] == s[i - 1]) {
s.erase(i, 1); ans++; i--;
}
}
cout << ans << endl;
return 0;
}
#include<stdio.h>
#include<string>
#include<algorithm>
#include <iterator>
#include<queue>
#include<functional>
using namespace std;
priority_queue<int, vector<int>, greater<int>>q;
int main()
{
int n;
cin >> n;
string s;
cin >> s;
int ans = 0;
for (int i = 1; i < s.size(); ++i) {
if (s[i] == s[i - 1]) {
s.erase(i, 1); ans++; i--;
}
}
cout << ans << endl;
return 0;
}
没有一发过的原因在于循环内部没有加 i-- 因为s.erase()后数据均向前移了一位,所以现在的s[i]相当于之前的s[i+1],所以应该让i自减,让数据重新校准
浙公网安备 33010602011771号