মান লিখুন: আমাদের কাছে n ক্যারেক্টার বিশিষ্ট একটি স্ট্রিং S রয়েছে। S-তে শুধু ছোট হাতের ইংরেজি অক্ষর আছে। আমাদের 0 থেকে n পরিসরে একটি k নির্বাচন করতে হবে, তারপর S-থেকে kটি ক্যারেক্টার বেছে নিয়ে যেকোনো ক্রমে পারমিউট করতে হবে। এই প্রক্রিয়ায় বাকি ক্যারেক্টারগুলো অপরিবর্তিত থাকবে। আমরা এই পুরো অপারেশনটি ঠিক একবার করব। S কে বানলা বর্ণানুক্রমে সর্টেড করার জন্য k-এর মান বের করতে হবে।
উদাহরণ
যদি ইনপুট হয় S = "acdb", তবে আউটপুট হবে 3, কারণ 'a' সঠিক জায়গায় আছে এবং বাকি ক্যারেক্টারগুলো রিঅ্যারেঞ্জ করতে হবে।
সমাধানের ধাপসমূহ
n := S এর আকার
d := S
d সর্ট করুন
j := 0
for i := 0 থেকে n-1:
যদি S[i] != d[i]:
j++
j রিটার্ন করুন
C++ বাস্তবায়ন
#include <bits/stdc++.h>
using namespace std;
int solve(string S) {
int n = S.size();
string d = S;
sort(d.begin(), d.end());
int j = 0;
for (int i = 0; i < n; i++) {
if (S[i] != d[i])
j++;
}
return j;
}
int main() {
string S = "acdb";
cout << solve(S) << endl;
}
ইনপুট
"acdb"
আউটপুট
3