ধরুন আমাদের দুটি স্ট্রিং s এবং t আছে। বাম বা ডান যেকোন দিকে t দুই জায়গায় ঘোরার মাধ্যমে আমরা s পেতে পারি কিনা তা পরীক্ষা করতে হবে।
সুতরাং, যদি ইনপুটটি s ="kolkata" t ="takolka" এর মত হয়, তাহলে আউটপুট হবে True কারণ আমরা "kolkata" পেতে দুইবার বাম দিকে "takolka" ঘুরাতে পারি।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি s-এর আকার t-এর আকারের সমান না হয়, তাহলে
- মিথ্যে ফেরত দিন
- right_rot :=ফাঁকা স্ট্রিং
- left_rot :=ফাঁকা স্ট্রিং
- l :=t এর আকার
- left_rot :=left_rot concatenate t[index l - 2 থেকে end] concatenate t[সূচী 0 থেকে l - 3]
- right_rot :=right_rot concatenate t[সূচী 2 থেকে শেষ পর্যন্ত] concatenate t[সূচী 0 থেকে 1]
- সত্য প্রত্যাবর্তন করুন যখন (গুলি ডান_রটের মতো বা গুলি বাম_রটের মতো) অন্যথায় মিথ্যা
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def solve(s, t): if (len(s) != len(t)): return False right_rot = "" left_rot = "" l = len(t) left_rot = (left_rot + t[l - 2:] + t[0: l - 2]) right_rot = right_rot + t[2:] + t[0:2] return (s == right_rot or s == left_rot) s = "kolkata" t = "takolka" print(solve(s, t))
ইনপুট
"kolkata", "takolka"
আউটপুট
True