मान लीजिए कि हम स्थिति (0, 0) पर हैं हमारे पास एक स्ट्रिंग है जो चार अक्षरों का उपयोग करके लगातार दिशाओं का प्रतिनिधित्व करती है। हमें दी गई सभी दिशाओं पर विचार करने के बाद जांचना है कि क्या हम (0, 0) की स्थिति में वापस आ सकते हैं। प्रतीक हैं
- ई पूर्व के लिए
- पश्चिम के लिए डब्ल्यू
- उत्तर के लिए उत्तर
- दक्षिण के लिए।
इसलिए, यदि इनपुट "ईएनडब्ल्यूडब्ल्यूएस" जैसा है, तो आउटपुट सही होगा, पूर्व की दो इकाइयों को स्थानांतरित करें, फिर उत्तर की ओर, फिर पश्चिम में दो इकाइयों को फिर से दक्षिण की ओर ले जाएं, इसलिए यह प्रारंभिक स्थिति है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- l :=मूव्स ऐरे का आकार
- यदि l, 0 के समान है, तो −
- सही लौटें
- एलएफटी:=0, ऊपर:=0
- इनिशियलाइज़ i :=0 के लिए, जब i
करें - यदि चाल [i] 'W' के समान है, तो −
- (एलएफटी 1 से बढ़ाएं)
- यदि चाल [i] 'E' के समान है, तो −
- (एलएफटी 1 से घटाएं)
- यदि चाल [i] 'N' के समान है, तो −
- (1 से बढ़ाएँ)
- यदि चाल [i] 'S' के समान है, तो:
- (1 से कम करें)
- यदि चाल [i] 'W' के समान है, तो −
- सही लौटें
उदाहरण (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