ধরুন আমাদের একটি ছোট হাতের স্ট্রিং 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