একটি স্ট্রিং অ্যারে arr দেওয়া আছে। স্ট্রিং s হলো arr-এর একটি উপ-ক্রমের সংযোগ যাতে সব অক্ষর অদ্বিতীয় থাকে। s-র সর্বোচ্চ সম্ভাব্য দৈর্ঘ্য বের করতে হবে। ইনপুট ["cha", "r", "act", "ers"] হলে আউটপুট ৬, সম্ভাব্য সমাধান: "chaers" আর "acters"।
সমাধানের ধাপগুলো:
ok()নামের একটি মেথড বানান যা দুটি স্ট্রিংsআরtনেবে। এটি নিচের মতো কাজ করবে:xনামের একটি ম্যাপ বানান।i = 0থেকেs.size()-1পর্যন্ত:x[s[i]]১ বাড়ান।- যদি
x[s[i]] > 1হয়,falseফেরত দিন।
i = 0থেকেt.size()-1পর্যন্ত:x[t[i]]১ বাড়ান।- যদি
x[t[i]] > 1হয়,falseফেরত দিন।
trueফেরত দিন।
- মূল মেথড:
vনামের একটি স্ট্রিং অ্যারে বানান,ans := 0,v-এ একটি খালি স্ট্রিং ঢোকান।i = 0থেকেarr.size()-1পর্যন্ত:n := v.size()j = 0থেকেn-1পর্যন্ত:- যদি
ok(v[j], arr[i])true হয়:t := v[j] + arr[i]v-এtঢোকান।ans := max(ans, t.size())
- যদি
ansফেরত দিন।
নিচের ইমপ্লিমেন্টেশনটি দেখুন:
উদাহরণ
#include <bits/stdc++.h> using namespace std; class Solution { public: bool ok(string s, string t){ map <char, int > x; for(int i = 0; i < s.size(); i++){ x[s[i]]++; if(x[s[i]] >1)return false; } for(int i = 0; i < t.size(); i++){ x[t[i]]++; if(x[t[i]]>1)return false; } return true; } int maxLength(vector<string>& arr) { vector <string> v; int ans = 0; v.push_back(""); for(int i = 0; i < arr.size(); i++){ int n = v.size(); for(int j = 0; j < n; j++){ if(ok(v[j],arr[i])){ string t = v[j]+arr[i]; v.push_back(t); ans = max(ans,(int)t.size()); } } } return ans; } }; main(){ vector<string> v = {"cha","r","act","ers"}; Solution ob; cout << (ob.maxLength(v)); }ইনপুট
["cha","r","act","ers"]
আউটপুট
6