মান লযয আমরা (0, 0) পজিশনে আছি। আমাদের একটি স্ট্রিং আছে যা চারটি অক্ষর দিয়ে ক্রমাগত ডিরেকশন নির্দেশ করে। আমাদের চেক করতে হবে সকল ডিরেকশন বিবেচনা করে (0, 0) পজিশনে ফিরে আসা সম্ভব কিনা। চিহ্নগুলো হলো:
- E for east (পূর্ব)
- W for west (পশ্চিম)
- N for north (উত্তর)
- S for south (দক্ষিণ)।
তাহলে, যদি ইনপুট হয় "EENWWS", তবে আউটপুট হবে true, কারণ দুই ইউনিট পূর্বে যাওয়া, তারপর উত্তর, তারপর দুই ইউনিট পশ্চিম, তারপর আবার দক্ষিণ - এতে শুরুর পজিশনে ফিরে আসা হয়।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব:
- l := moves অ্যারের সাইজ
- যদি l ০ এর সমান হয়, তবে:
- true ফেরত দিন
- lft := 0, up := 0
- i := 0 থেকে l পর্যন্ত লুপ চালান:
- যদি moves[i] == 'W', তবে lft বাড়ান
- যদি moves[i] == 'E', তবে lft কমান
- যদি moves[i] == 'N', তবে up বাড়ান
- যদি moves[i] == 'S', তবে up কমান
- যদি lft == 0 এবং up == 0, তবে true ফেরত দিন
- অন্যথায় false ফেরত দিন
উদাহরণ (C++)
বेहतर বুঝতে নিচের ইমপ্লিমেন্টেশন দেখুন:
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool solve(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] == 'W') {
lft++;
}
if (moves[i] == 'E') {
lft--;
}
if (moves[i] == 'N') {
up++;
}
if (moves[i] == 'S') {
up--;
}
}
if (lft == 0 && up == 0) {
return true;
}
return false;
}
};
main(){
Solution ob;
cout << (ob.solve("EENWWS"));
}
ইনপুট
"EENWWS"
আউটপুট
1