মান লেও আমাদের একটি স্ট্রিং s আছে, আমাদের যাচাই করতে হবে কি আমরা এটিকে চারটি সাব-স্ট্রিং-এ (sub-strings) ভাগ করতে পারি যাতে প্রতিটি নন-এমপ্টি (non-empty) এবং ইউনিক (unique)।
তাই, যদি ইনপুট হয় s = "helloworld", তবে আউটপুট হবে True কারণ সাব-স্ট্রিংগুলির একটি সম্ভাব্য সেট হলো ["hel", "lo", "wor", "ld"]।
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব:
- যদি s-এর সাইজ >= 10 হয়, তবে
- True রিটার্ন করুন
- i = 1 থেকে s-এর সাইজ - 1 পর্যন্ত, করুন
- j = i + 1 থেকে s-এর সাইজ - 1 পর্যন্ত, করুন
- k = j + 1 থেকে s-এর সাইজ - 1 পর্যন্ত, করুন
- sub1 := s[0 থেকে i - 1 인ডেক্স]
- sub2 := s[i থেকে j - i - 1 인ডেক্স]
- sub3 := s[j থেকে k - j - 1 인ডেক্স]
- sub4 := s[k থেকে s-এর সাইজ - k - 1 인ডেক্স]
- যদি sub1, sub2, sub3 এবং sub4 সবই আলাদা হয়, তবে
- True রিটার্ন করুন
- k = j + 1 থেকে s-এর সাইজ - 1 পর্যন্ত, করুন
- j = i + 1 থেকে s-এর সাইজ - 1 পর্যন্ত, করুন
- False রিটার্ন করুন
উদাহরণ
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন:
def solve(s):
if len(s) >= 10:
return True
for i in range(1, len(s)):
for j in range(i + 1, len(s)):
for k in range(j + 1, len(s)):
sub1 = s[0:i]
sub2 = s[i:j - i]
sub3 = s[j: k - j]
sub4 = s[k: len(s) - k]
if sub1 != sub2 and sub1 != sub3 and sub1 != sub4 and sub2 != sub3 and sub2 != sub4 and sub3 != sub4:
return True
return False
s = "helloworld"
print (solve(s))
ইনপুট
"helloworld"
আউটপুট
True