একটি স্ট্রিং S দেওয়া আছে যার ক্যারেক্টারগুলো '+' বা '-'। একটি পাথরের পাইল আছে, nবার আমরা বা একটা পাথর তুলব বা একটা পাথর যোগ করব। পাইল খালি না থাকা শর্তে পাথর তুলা হয়। S[i] = '-' মানে i-তম অপারেশনে পাথর তুলা হয়েছে, '+' মানে যোগ করা হয়েছে। সব অপারেশনের পর পাইলেও থাকা ন্যূনতম পাথর সংখ্যা বের করতে হবে।
উদাহরণ
S = "++-++" → আউটপুট: 3
ব্যাখ্যা: শুরুতে ০ পাথর থাকলে অপারেশনগুলো করলে শেষে ৩টি পাথর থাকবে।
সমাধানের ধাপসমূহ
n := S-এর সাইজ
res := 0
for i := 0 to n-1:
res := (S[i] == '-') ? max(res - 1, 0) : res + 1
return res
সি++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int solve(string S) {
int n = S.size(), res = 0;
for (int i = 0; i < n; i++)
res = (S[i] == '-') ? max(res - 1, 0) : res + 1;
return res;
}
int main() {
string S = "++-++";
cout << solve(S) << endl;
}
ইনপুট
"++-++"
আউটপুট
3