मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं। हम किसी भी स्थिति पर वर्ण को केवल किसी स्वर (vowel) में बदल सकते हैं यदि वह पहले से स्वर है, या किसी व्यंजन (consonant) में यदि वह पहले से व्यंजन है। हमें यह जांचना है कि क्या s को t में दर्शाया जा सकता है या इसके विपरीत।
उदाहरण के लिए, यदि इनपुट s = "udpgma", t = "itmmve" है, तो आउटपुट True होगा क्योंकि हम u→i, d→t, p→m, a→e में बदल सकते हैं।
समाधान दृष्टिकोण
हम दोनों स्ट्रिंग्स को समानांतर पार करते हैं। प्रत्येक स्थिति के लिए, हम जांचते हैं कि क्या दोनों वर्ण स्वर हैं या दोनों व्यंजन हैं। यदि एक स्वर है और दूसरा व्यंजन, तो रूपांतरण असंभव है।
एल्गोरिदम चरण:
- यदि
len(s) != len(t), तो False लौटाएं - प्रत्येक इंडेक्स
iके लिए: - यदि
s[i]औरt[i]दोनों स्वर हैं, तो जारी रखें - अन्यथा यदि दोनों व्यंजन हैं, तो जारी रखें
- अन्यथा False लौटाएं
- True लौटाएं
पायथन कार्यान्वयन
def isVowel(x):
return x in ['a', 'e', 'i', 'o', 'u']
def solve(s, t):
s_size = len(s)
if s_size != len(t):
return False
for i in range(s_size):
s_vowel = isVowel(s[i])
t_vowel = isVowel(t[i])
if s_vowel and t_vowel:
continue
elif not s_vowel and not t_vowel:
continue
else:
return False
return True
s, t = "udpgma", "itmmve"
print(solve(s, t)) # True
इनपुट
"udpgma", "itmmve"
आउटपुट
True
व्याख्या:
| इंडेक्स | s | t | प्रकार | मेल |
|---|---|---|---|---|
| 0 | u | i | स्वर→स्वर | ✓ |
| 1 | d | t | व्यंजन→व्यंजन | ✓ |
| 2 | p | m | व्यंजन→व्यंजन | ✓ |
| 3 | g | m | व्यंजन→व्यंजन | ✓ |
| 4 | m | v | व्यंजन→व्यंजन | ✓ |
| 5 | a | e | स्वर→स्वर | ✓ |
सभी स्थितियां मेल खाती हैं!