একটি লোয়ারকেস স্ট্রিং s দেওয়া আছে। s-এর যেসব সাবস্ট্রিং-এর অ্যানাগ্রাম s-এ অন্য একটি আলাদা লোকেশনে আছে, সেগুলো লেক্সিকোগ্রাফিক্যাল অর্ডারে রিটার্ন করুন।
উদাহরণ
s = "abcba" → আউটপুট: ['a', 'a', 'ab', 'abc', 'abcb', 'b', 'b', 'ba', 'bc', 'bcba', 'cb', 'cba']
এলগরিদম
res := [],L := len(s)for i in 1..L(সাবস্ট্রিং দৈর্ঘ্য):smap := defaultdict(list)for j in 0..L-i:cs := s[j:j+i]k := ''.join(sorted(cs))smap[k].append(cs)
- প্রতিটি
k, vইনsmap-এ:- যদি
len(v) >= 2:res.extend(v)
- যদি
sorted(res)রিটার্ন করুন।
পাইথন কোড
from collections import defaultdict
def solve(s):
res = []
L = len(s)
for i in range(1, L + 1):
smap = defaultdict(list)
for j in range(L - i + 1):
cs = s[j : j + i]
k = "".join(sorted(cs))
smap[k].append(cs)
for k, v in smap.items():
if len(v) >= 2:
res.extend(v)
return sorted(res)
s = "abcba"
print(solve(s))
# আউটপুট: ['a', 'a', 'ab', 'abc', 'abcb', 'b', 'b', 'ba', 'bc', 'bcba', 'cb', 'cba']
ইনপুট / আউটপুট
"abcba" ['a', 'a', 'ab', 'abc', 'abcb', 'b', 'b', 'ba', 'bc', 'bcba', 'cb', 'cba']