मान लीजिए कि कोई रोबोट है और उसकी आरंभिक स्थिति (0, 0) है। यदि हमारे पास इसकी गतिविधियों का एक क्रम है, तो हमें यह जांचना होगा कि क्या यह रोबोट अपनी चाल पूरी करने के बाद (0, 0) पर समाप्त होता है।
चाल अनुक्रम एक स्ट्रिंग के रूप में दिया जाता है, और चरित्र चलता है [i] इसकी ith चाल का प्रतिनिधित्व करता है। दाएं के लिए आर, बाएं के लिए एल, ऊपर के लिए यू, और नीचे के लिए डी प्रतीक हैं। यदि रोबोट अपनी सभी चालों को पूरा करने के बाद मूल में वापस आ जाता है, तो सही लौटें। अन्यथा, झूठी वापसी करें।
इसलिए, अगर इनपुट "RRULLD" जैसा है, तो आउटपुट सही होगा, राइट टू-यूनिट, फिर ऊपर जाएं, फिर बाएं दो यूनिट फिर नीचे, तो यह शुरुआती स्थिति है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
l :=मूव्स ऐरे का आकार
-
यदि l, 0 के समान है, तो -
-
सही लौटें
-
-
एलएफटी:=0, ऊपर:=0
-
इनिशियलाइज़ i :=0 के लिए, जब i
-
यदि चाल [i] 'L' के समान है, तो -
-
(एलएफटी 1 से बढ़ाएँ)
-
-
यदि चाल [i] 'R' के समान है, तो -
-
(एलएफटी 1 से घटाएं)
-
-
यदि चाल [i] 'U' के समान है, तो -
-
(1 से बढ़ाएँ)
-
-
अगर चाल [i] 'डी' के समान है, तो -
-
(1 से कम करें)
-
-
-
अगर एलएफटी 0 के समान है और ऊपर 0 के समान है, तो -
-
सही लौटें
-
-
झूठी वापसी
उदाहरण
आइए एक बेहतर समझ प्राप्त करने के लिए निम्नलिखित कार्यान्वयन देखें -
#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; } }; main(){ Solution ob; cout << (ob.judgeCircle("RRULLD")); }
इनपुट
"RRULLD"
आउटपुट
1