ধরুন আমাদের কাছে num নামক একটি স্ট্রিং আছে যা একটি খুব বড় পূর্ণসংখ্যার প্রতিনিধিত্ব করে এবং এর আরেকটি মান k আছে। আমরা সর্বাধিক k সময়ে মানের দুটি সন্নিহিত সংখ্যা অদলবদল করতে পারি। আমরা পেতে পারি সর্বনিম্ন মান খুঁজে বের করতে হবে.
সুতরাং, যদি ইনপুটটি num ="5432" k =4 এর মত হয়, তাহলে আউটপুট হবে 2453 কারণ প্রথম সংখ্যাটি 5432। তারপর প্রথম পর্বের পরে এটি 4532, তারপর 4523, তারপর 4253 এবং চূড়ান্ত পর্বে 2453 হবে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব
-
min_num :=সংখ্যার অঙ্কগুলি সাজান
-
i :=0, to_find :=0
-
যদিও num min_num এবং k> 0 এবং i
-
indx :=আইটেমের সূচী সূচক i থেকে num এ খুঁজে পাওয়া যায়
-
যখন indx -1 এর মতো নয়, do
-
যদি indx - i <=k, তারপর
-
num :=num[সূচী 0 থেকে i-1] concatenate num[indx] concatenatenum[index i থেকে indx-1] concatenate num[index indx+1 থেকে শেষ পর্যন্ত]
-
k :=k -(indx - i)
-
i :=i + 1
-
to_find :=0
-
indx :=আইটেমের সূচী সূচী i থেকে num এ খুঁজে পেতে
-
-
অন্যথায়,
-
লুপ থেকে বেরিয়ে আসুন
-
-
-
to_find :=to_find + 1
-
-
রিটার্ন নম্বর
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
def solve(num, k): min_num = sorted(list(num)) min_num = ''.join(min_num) i = 0 to_find = 0 while num != min_num and k > 0 and i < len(num): indx = num.find(str(to_find), i) while indx != -1: if indx - i <= k: num = num[:i] + num[indx] + num[i:indx] + num[indx+1:] k -= (indx - i) i += 1 to_find = 0 indx = num.find(str(to_find), i) else: break to_find += 1 return num num = "5432" k = 4 print(solve(num, k))
ইনপুট
"5432", 4
আউটপুট
2453