ধরুন আমাদের দুটি স্ট্রিং আছে str1 এবং str2। এবং তাদের দৈর্ঘ্য একই, আমাদের পরীক্ষা করতে হবে যে আমরা শূন্য বা তার বেশি রূপান্তর করে str1 কে str2 তে রূপান্তর করতে পারি কিনা।
একটি রূপান্তরে আমরা str1-এ একটি অক্ষরের সমস্ত ঘটনাকে অন্য যেকোনো ছোট হাতের ইংরেজি অক্ষরে রূপান্তর করতে পারি। আমরা str1 কে str2 তে রূপান্তর করতে পারি কিনা তা পরীক্ষা করতে হবে।
সুতরাং, যদি ইনপুটটি str1 ="aabcc", str2 ="ccdee" এর মতো হয়, তাহলে আউটপুটটি সত্য হবে, যেমন 'c' থেকে 'e' তারপর 'b' থেকে 'd' তারপর 'a' থেকে 'c' রূপান্তর করুন। ' এখানে আমাদের মনে রাখতে হবে যে রূপান্তরের ক্রম গুরুত্বপূর্ণ।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন কম্প্রেস () সংজ্ঞায়িত করুন। এটি s
লাগবে -
n :=s এর আকার
-
a :=একটি নতুন তালিকা
-
গণনা :=1
-
1 থেকে n রেঞ্জের জন্য, করুন
-
যদি s[i] s[i-1] এর মত না হয়, তাহলে
-
একটি
শেষে গণনা সন্নিবেশ করান -
গণনা:=1
-
-
অন্যথায়,
-
গণনা :=গণনা + 1
-
-
-
একটি
শেষে গণনা সন্নিবেশ করান -
একটি ফেরত দিন
-
একটি ফাংশন সংজ্ঞায়িত করুন canConvert()। এটি str1, str2
লাগবে -
a :=কম্প্রেস(str1)
-
b :=কম্প্রেস(str2)
-
n :=a এর আকার, m :=b এর আকার
-
d:=একটি নতুন মানচিত্র
-
n :=সর্বনিম্ন n, m
-
i :=0
-
যখন i
-
যদি a[i]>b[i] অ-শূন্য হয়, তাহলে
-
রিটার্ন ফলস
-
-
i :=i + 1
-
-
str2 এ প্রতিটি i এর জন্য, করুন
-
যদি আমি d-এ না থাকি তাহলে অ-শূন্য হয়, তাহলে
-
d[i]:=1
-
-
-
রিটার্ন True যদি 26 - d-এর মাপ শূন্য না হয় বা str1 str2 এর মত হয় অন্যথায় False
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
<প্রি>ক্লাস সলিউশন(অবজেক্ট):def কম্প্রেস(self,s):n =len(s) a =[] count =1 in range (1,n):যদি s[i]!=s[i -1]:a.append(count) count=1 else:count+=1 a.append(count) রিটার্ন a def canConvert(self, str1, str2):a =self.compress(str1) b =self.compress( str2) n =len(a) m =len(b) d={} n =min(n,m) i =0 যখন iইনপুট
"aabcc", "ccdee"
আউটপুট
সত্য