问题
题目描述
在一个农场里养了很多头的小猪,这些小猪有些被栅栏围了起来,有些则散养在了栅栏的外面,假设栅栏用小写字母r
表示,小猪用字母p
表示,一对r
之间的p
表示这些小猪被围在了栅栏里(每 两个 连续的 r
为 一对,第一个和第二个 r
为一对,第三个和第四个 r
为一对,以此类推),问散养在外面的小猪数量是多少?
输入格式
输入一行只包含小写字母r
和p
的字符串(字母r
有偶数个),字符串长度∈[1,10^5]。
输出格式
输出答案。
#include <bits/stdc++.h>
#include <string>
using namespace std;
//问题求解是散养的小猪
int A(string& str) {
bool x = true; // 假设门初始是关的
int count = 0;
for (size_t i = 0; i < str.length(); i++)//重点:用int i=0这样不可以,因为没办法与str.length()匹配
//与str.length匹配的是size_t
{
char ch = str[i];
if (ch == 'p') {
if (x == true) { // 如果门是关的则加入
count++;
}
}
else if (ch == 'r') { // r是开关门
x = !x; //r开门
}
}
return count; // 将return移到for循环之后
}
int main() {
string str;
cin >> str;
cout << A(str) << endl;
return 0;
}
重点1开关门bool不停变化
重点2:size_t匹配str.length()