मान लीजिए हमारे पास एक स्ट्रिंग और एक पूर्णांक k है, हमें स्ट्रिंग की शुरुआत से गिनती करते हुए हर 2k वर्णों के लिए पहले k वर्णों को उलटना है। यदि पर्याप्त वर्ण नहीं बचे हैं, तो उन सभी को उलट दें। यदि 2k से कम वर्ण हैं लेकिन k से अधिक या बराबर हैं, तो पहले k वर्णों को उलट दें और बाकी को मूल छोड़ दें।
उदाहरण के लिए, यदि इनपुट "abcdefgh" और k = 3 है, तो आउटपुट "cbadefhg" होगा।
हल करने के चरण
- l := s के वर्णों की सूची बनाएं
- i := k-1
- जब तक i < l का आकार + k:
- a := l[0 से i-k+1 तक सूचकांक]
- b := l[i-k+1 से i+1 तक सूचकांक]
- c := l[i+1 से अंत तक]
- l := a + b[उलटा] + c
- i := i + 2*k
- l में प्रत्येक वर्ण को जोड़कर स्ट्रिंग वापस करें
उदाहरण
class Solution:
def reverseStr(self, s, k):
l = list(s)
i = k - 1
while i < len(l) + k:
a = l[:i - k + 1]
b = l[i - k + 1:i + 1]
c = l[i + 1:]
l = a + b[::-1] + c
i += 2 * k
return ''.join(l)
ob = Solution()
print(ob.reverseStr("abcdefg", 3))
इनपुट
"abcdefg", 3
आउटपुट
cbadefg