मान लीजिए कि हमारे पास एक संख्या n है, हमें अनुक्रम से nth मान नहीं मिला है। क्रम नीचे जैसा है -
- xxy
- xxyxxy
- yxxyxx
- xyyxyy
- xyyxyyxyyxyy
- ...
अगला मान उत्पन्न करने के लिए, हमें इन नियमों का पालन करना होगा, xy से पहले पद के रूप में शुरू करना -
-
जब हम पैटर्न की शुरुआत में हों, तो इसे दोगुना करें (स्ट्रिंग को अपने साथ जोड़ लें)।
-
जब पिछला ऑपरेशन दोगुना हो रहा था, तो इसे उल्टा कर दें।
-
जब पिछला ऑपरेशन उलट रहा था, तो सभी xs को y से बदल दें और इसके विपरीत।
-
इन चरणों को दोहराएं।
इसलिए, यदि इनपुट n =5 जैसा है, तो आउटपुट "yyxyyxyyxyyx" होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- मैं :=0
- रिट:="xxy"
- जबकि मैं
- यदि i mod 3 0 के समान है, तो
- ret :=ret + ret
- अन्यथा जब i mod 3 1 के समान होता है, तो
- ret :=सूचकांक 0 से अंत-1 तक रिट का उप-सरणी
- अन्यथा,
- new_stringy :=रिक्त स्ट्रिंग
- रिटर्न में प्रत्येक सी के लिए, करें
- यदि c "x" के समान है, तो
- new_stringy :=new_stringy concatenate "y"
- अन्यथा,
- new_stringy :=new_stringy concatenate "x"
- यदि c "x" के समान है, तो
- रिट:=new_stringy
- i :=i + 1
- यदि i mod 3 0 के समान है, तो
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s): i = 0 ret = "xxy" while i < s: if i % 3 == 0: ret += ret elif i % 3 == 1: ret = ret[::-1] else: new_stringy = "" for c in ret: if c == "x": new_stringy += "y" else: new_stringy += "x" ret = new_stringy i += 1 return ret ob = Solution() print(ob.solve(5))
इनपुट
5
आउटपुट
yyxyyxyyxyyx