একটি রোবট আছে যার শুরুতে পজিশন (0, 0)। এর মুভমেন্ট সিকোয়েন্স দেওয়া থাকলে চেক করতে হবে সেটি সব মুভ সম্পন্ন করার পর (0, 0)-এ ফিরে আসে কিনা।
মুভ সিকোয়েন্স স্ট্রিং আকারে দেওয়া থাকে। moves[i] এর মান: R (ডান), L (বাম), U (উপর), D (নিচ)। রোবট অরিজিনে ফিরে আসলে true, অন্যথায় false রিটার্ন করুন।
ইনপুট "RRULLD" হলে আউটপুট true। ডান দুই ইউনিট, উপরে এক, বাম দুই, নিচে এক - আবার শুরুর পজিশন।
সমাধানের ধাপসমূহ
- l := moves.length()
- যদি l == 0, true রিটার্ন করুন
- lft := 0, up := 0
- প্রতিটি i এর জন্য:
- 'L' হলে lft++
- 'R' হলে lft--
- 'U' হলে up++
- 'D' হলে up--
- যদি lft==0 এবং up==0 হয়, true রিটার্ন করুন
- false রিটার্ন করুন
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool judgeCircle(string moves) {
int l = moves.length();
if (l == 0) { return true; }
int lft = 0, up = 0;
for (int i = 0; i < l; i++) {
if (moves[i] == 'L') { lft++; }
if (moves[i] == 'R') { lft--; }
if (moves[i] == 'U') { up++; }
if (moves[i] == 'D') { up--; }
}
if (lft == 0 && up == 0) { return true; }
return false;
}
};
int main(){
Solution ob;
cout << (ob.judgeCircle("RRULLD"));
}ইনপুট
"RRULLD"
আউটপুট
1