ধরুন আমাদের একটি ছোট হাতের স্ট্রিং s আছে, আমাদের পরীক্ষা করতে হবে যে আমরা সর্বাধিক 1টি অক্ষর মুছে s কে একটি বৈধ স্ট্রিংয়ে রূপান্তর করতে পারি কিনা। এখানে একটি বৈধ স্ট্রিং মানে একটি স্ট্রিং স্ট্র যেমন স্ট্র-এ সমস্ত অনন্য অক্ষরের জন্য প্রতিটি অক্ষরের ফ্রিকোয়েন্সি একই।
সুতরাং, যদি ইনপুটটি s ="xyyzx" এর মত হয়, তাহলে আউটপুটটি True হবে কারণ আমরা 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
- occr :=সংঘটন[j]
- লুপ থেকে বেরিয়ে আসুন
- যদি ঘটনা[j] occr1 এর মত হয়, তাহলে
j+1 থেকে আকার - 1-এর মধ্যে k-এর জন্য - যদি ঘটনা[j] 0 না হয়, তাহলে
- করুন
- যদি ঘটনা[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