मान लीजिए हमारे पास एक स्ट्रिंग S है, हमें उल्टी स्ट्रिंग ढूंढनी है जहां सभी गैर-अक्षर वर्ण अपनी स्थिति नहीं बदलेंगे और सभी अक्षर अपनी स्थिति उल्टा कर लेंगे। उदाहरण के लिए, यदि दी गई स्ट्रिंग "a-bC-dEf-ghIj" है, तो आउटपुट "j-Ih-gfE-dCba" होगा।
हल करने के चरण
- हम इस समस्या को हल करने के लिए नियमित अभिव्यक्ति लाइब्रेरी का उपयोग करेंगे
- यदि S खाली है, तो S वापस करें
- str := एक खाली स्ट्रिंग, index1 := 0 और index2 := S की लंबाई - 1
- जब तक index1 < S की लंबाई
- यदि index2 >= 0 और S[index1] अक्षर है और S[index2] अक्षर है
- str := str + S[index2]
- index2 को 1 से घटाएं, और index1 को 1 से बढ़ाएं
- अन्यथा यदि S[index1] अक्षर है तो index2 को 1 से घटाएं
- अन्यथा यदि S[index1] अक्षर नहीं है, तो str := str + S[index1], index1 को 1 से बढ़ाएं
- अन्यथा index2 को 1 से घटाएं, और index1 को 1 से बढ़ाएं
- यदि index2 >= 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):
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"