मान लीजिए एक रोबोट है और इसकी शुरुआती स्थिति (0, 0) है। यदि हमारे पास इसकी गतिविधियों का क्रम है, तो हमें जांचना होगा कि क्या यह रोबोट अपनी चालें पूरी करने के बाद (0, 0) पर पहुंचता है।
चाल अनुक्रम एक स्ट्रिंग के रूप में दिया जाता है, और वर्ण moves[i] इसकी iवीं चाल को दर्शाता है। प्रतीक हैं: R दाएं के लिए, L बाएं के लिए, U ऊपर के लिए, और D नीचे के लिए। यदि रोबोट अपनी सभी चालें पूरी करने के बाद मूल स्थान पर लौटता है, तो true वापस करें। अन्यथा, false वापस करें।
इसलिए, यदि इनपुट "RRULLD" जैसा है, तो आउटपुट true होगा, दाएं दो यूनिट, फिर ऊपर जाएं, फिर बाएं दो यूनिट फिर फिर नीचे, तो यह शुरुआती स्थिति है।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
l := moves सरणी का आकार- यदि
l == 0, तो:trueवापस करें
lft := 0, up := 0i := 0सेl-1तक लूप चलाएं:- यदि
moves[i] == 'L', तो:lft को 1 से बढ़ाएं
- यदि
moves[i] == 'R', तो:lft को 1 से घटाएं
- यदि
moves[i] == 'U', तो:up को 1 से बढ़ाएं
- यदि
moves[i] == 'D', तो:up को 1 से घटाएं
- यदि
- यदि
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