मान लीजिए कि हमारे पास एक लोअरकेस स्ट्रिंग है, हमें यह जांचना होगा कि क्या हम अधिकतम 1 वर्ण को हटाकर s को एक वैध स्ट्रिंग में परिवर्तित कर सकते हैं। यहां एक मान्य स्ट्रिंग का अर्थ है एक स्ट्रिंग str जैसे कि str में सभी अद्वितीय वर्णों के लिए प्रत्येक वर्ण की आवृत्ति समान होती है।
इसलिए, यदि इनपुट s ="xyyzx" जैसा है, तो आउटपुट सही होगा क्योंकि हम z को हटा सकते हैं तो स्ट्रिंग "xyyx" होगी जहां x और y की घटनाएं समान हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- आकार :=26
- घटना :=26 आकार की एक सरणी। यह प्रत्येक वर्ण की आवृत्तियों को s में संग्रहीत कर रहा है
- occr1 :=0
- occr1_cnt:=0
- मैं के लिए 0 से आकार -1 की सीमा में, करो
- यदि घटना [i] 0 नहीं है, तो
- occr1:=घटना[i]
- occr1_cnt:=1
- लूप से बाहर आएं
- यदि घटना [i] 0 नहीं है, तो
- occr2 :=0
- occr2_cnt:=0
- j के लिए i+1 से लेकर आकार -1 तक की श्रेणी में
- यदि घटना [j] 0 नहीं है, तो
- यदि घटना [j] occr1 के समान है, तो
- occr1_cnt:=occr1_cnt + 1
- अन्यथा,
- occr2_cnt:=1
- घटना :=घटना[j]
- लूप से बाहर आएं
- यदि घटना [j] occr1 के समान है, तो
- यदि घटना [j] 0 नहीं है, तो
- k के लिए j+1 से लेकर आकार -1 तक की श्रेणी में
- यदि घटना [k] 0 नहीं है, तो
- यदि घटना [k] occr1 के समान है, तो
- occr1_cnt:=occr1_cnt + 1
- यदि घटना [k] occr2 के समान है, तो
- occr2_cnt:=occr2_cnt + 1
- अन्यथा,
- झूठी वापसी
- यदि घटना [k] occr1 के समान है, तो
- अगर occr1_cnt> 1 और occr2_cnt> 1, तो
- झूठी वापसी
- यदि घटना [k] 0 नहीं है, तो
- सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
size = 26
def solve(str):
occurrence = [0]*size
for i in range(len(str)): occurrence[ord(str[i])-ord('a')] += 1
occr1 = 0
occr1_cnt = 0
for i in range(size):
if (occurrence[i] != 0):
occr1 = occurrence[i]
occr1_cnt = 1
break
occr2 = 0
occr2_cnt = 0
for j in range(i+1,size):
if (occurrence[j] != 0):
if (occurrence[j] == occr1):
occr1_cnt += 1
else:
occr2_cnt = 1
occr = occurrence[j]
break
for k in range(j+1,size):
if occurrence[k] != 0:
if (occurrence[k] == occr1):
occr1_cnt += 1
if (occurrence[k] == occr2):
occr2_cnt += 1
else:
return False
if occr1_cnt > 1 and occr2_cnt > 1:
return False
return True
s = "xyyzx"
print(solve(s)) इनपुट
"xyyzx"
आउटपुट
True