幸运分学习记录
#include<iostream>
#include <string>
using namespace std;
int main()
{
string str;
cin >> str;
int left = 0,right=0;
int num = 0;
while (1)
{
if (left == str.length()||right==str.length())
{
break;
}
while (1)
{
if (str[left] != '(')
{
left++;
continue;
}
else {
break;
}
}
right = left;
while (1)
{
if (str[right] != ')')
{
right++;
}
else {
num++;
left = right+1;
break;
}
}
}
cout << num;
}
然后发现没有理解清楚题意…,题中含义为找到右括号后和该右括号左边第一个左括号配对,我误解成该右括号左侧从左往右数第一个左括号…
其实这题很简单,从左往右执行,碰到左括号变量num加一,说明有待配对的左括号,碰到右括号时,若有待配对的左括号则num减一,分数加一,
#include<iostream>
#include <string>
using namespace std;
int main()
{
string str;
cin >> str;
int num = 0;
int result = 0;
for (int i = 0; i < str.length(); i++)
{
if (str[i] == '(')
{
num++;
}
else if (str[i] == ')')
{
if (num > 0)
{
num--;
result++;
}
}
}
cout << result << endl;
}