मान लीजिए हमारे पास दो लोअरकेस स्ट्रिंग्स s और t हैं। कभी-कभी जब हम एक स्वर (vowel) टाइप करते हैं, तो कुंजी देर तक दबी रह सकती है, और स्वर 1 या अधिक बार दोहराया जा सकता है। हमें यह जांचना है कि क्या संभव है कि t, s को इंगित करता हुआ टाइप किया गया संस्करण है।
उदाहरण के लिए, यदि इनपुट s = "mine", t = "miiine" है, तो आउटपुट True होगा क्योंकि स्वर 'i' तीन बार दोहराया गया है, अन्य अक्षर ठीक हैं।
समाधान दृष्टिकोण
हम दोनों स्ट्रिंग्स को साथ-साथ पार करते हैं। जब स्वर मिलता है, तो हम t में लगातार समान स्वरों को गिनते हैं और s में संगत स्वरों से तुलना करते हैं। t में स्वरों की संख्या s से कम नहीं होनी चाहिए।
एल्गोरिदम चरण:
s_len, t_lenऔरj = 0(t के लिए इंडेक्स) इनिशियलाइज़ करें- प्रत्येक
i(0 से s_len-1) के लिए: - यदि
s[i] != t[j], तो False लौटाएं - यदि
s[i]स्वर नहीं है, तोj += 1और अगले पर जाएं sमें लगातार समान स्वरों की गिनतीcnt_1करेंtमें लगातार समान स्वरों की गिनतीcnt_2करें- यदि
cnt_1 > cnt_2, तो False लौटाएं - True लौटाएं
पायथन कार्यान्वयन
def isVowel(c):
return c in "aeiou"
def solve(s, t):
s_len = len(s)
t_len = len(t)
j = 0
for i in range(s_len):
if s[i] != t[j]:
return False
if not isVowel(s[i]):
j += 1
continue
cnt_1 = 1
while i < s_len - 1 and s[i] == s[i+1]:
cnt_1 += 1
i += 1
cnt_2 = 1
while j < t_len - 1 and t[j] == s[i]:
cnt_2 += 1
j += 1
if cnt_1 > cnt_2:
return False
return True
s = "mine"
t = "miiine"
print(solve(s, t)) # True
इनपुट
"mine", "miiine"
आउटपुट
True
व्याख्या:
s = "mine", t = "miiine"
- m → m (स्वर नहीं) ✓
- i → iii (स्वर, s में 1 बार, t में 3 बार) ✓
- n → n (स्वर नहीं) ✓
- e → e (स्वर, दोनों में 1 बार) ✓