失われたかっこ
1408 ワード
#include <iostream>
#include <string>
using namespace std;
int num = 0;
int flag = 0;
int m = 0;
string tmp = "";
string s;
void solve()
{
for (int i = 0; i < s.size(); i++)
{
if (s[i] == '+' || s[i] == '-' ||i==(s.size()-1))
{
if (i == s.size() - 1)
{
tmp += s[i];//문자열 합치기
}
if (flag)//이상황은 이전문자열에서 -한번나왔을때
{
num -= stoi(tmp);
tmp = "";
}
else
{
num += stoi(tmp);
tmp = "";
}
if (s[i] == '-')
{
flag = 1;
}
}
else //
{
tmp += s[i];//문자열 합치기
}
}
}
int main(int argc, char* argv[])
{
cin >> s;
solve();
cout << num << endl;
return 0;
}
まず基本的に.1.string tmpによる文字列全体の特定部分のマージ
2]+または-適用される場合はflag変数を使用します.
flagが1の場合は削除し、0の場合は追加します.
3.演算子が連続して現れていない場合、一番前の数字を除いて、すべてやった場合、最小値の内容が現れます.
すなわち,else文は1回のみ入る(1回目)
文字列処理を受信と、
すべての複文を回してください.
特定の条件ではない場合.
string stemp += s[i]; 作ってくれると同時に、
条件を満たすとstemp="";初期化作業を行います.」
Reference
この問題について(失われたかっこ), 我々は、より多くの情報をここで見つけました https://velog.io/@imalive77/잃어버린-괄호テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol