मान लीजिए कि हमारे पास एक स्ट्रिंग S है, हमें उलटी हुई स्ट्रिंग ढूंढनी है, जहां सभी वर्ण जो एक अक्षर नहीं हैं, अपनी स्थिति नहीं बदलेंगे और सभी अक्षर अपनी स्थिति को उलट देंगे। इसलिए यदि दी गई स्ट्रिंग "a-bC-dEf-ghIj" है, तो आउटपुट "j-Ih-gfE-dCba" होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- इसे हल करने के लिए हम रेगुलर एक्सप्रेशन लाइब्रेरी का उपयोग करेंगे
- अगर S खाली है, तो S को वापस कर दें
- str :=एक खाली स्ट्रिंग, अनुक्रमणिका1 :=0 और अनुक्रमणिका2 :=S – 1 की लंबाई
- जबकि अनुक्रमणिका1 <एस की लंबाई
- यदि अनुक्रमणिका2>=0 और S[index1] वर्णमाला है और S[index2] वर्णमाला है
- str:=str + S[index2]
- इंडेक्स2 को 1 से घटाएं और इंडेक्स1 को 1 से बढ़ाएं
- अन्यथा यदि S[index1] वर्णमाला है तो index2 को 1 से घटाएं
- अन्यथा यदि S[index1] वर्णमाला नहीं है, तो str :=str + S[index1], index1 को 1 से बढ़ाएं
- अन्यथा अनुक्रमणिका2 को 1 से घटाएं और अनुक्रमणिका1 को 1 से बढ़ाएं
- यदि अनुक्रमणिका2>=0 और S[index1] वर्णमाला है और S[index2] वर्णमाला है
- वापसी str
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution: def reverseOnlyLetters(self, S): if not S: return S str_= "" index1 = 0 index2 = len(S)-1 while index1<len(S): #print(index1,index2) if index2>=0 and S[index1].isalpha() and S[index2].isalpha(): str_+=S[index2] index2 -= 1 index1 += 1 elif S[index1].isalpha(): index2-=1 elif not S[index1].isalpha(): str_+=S[index1] index1+=1 else: index2 -= 1 index1 += 1 return str_ ob1 = Solution() print(ob1.reverseOnlyLetters("a-bC-dEf-ghIj"))
इनपुट
"a-bC-dEf-ghIj"
आउटपुट
"j-Ih-gfE-dCba"