C++程序:查找需要重新排列多少字符才能将字符串排序
假设我们有一个包含n个字符的字符串S。S只包含小写字母。我们必须选择一个范围在0到n之间的数字k,然后从S中选择k个字符并以任意顺序排列它们。在此过程中,其余字符将保持不变。我们只执行此整个操作一次。我们必须找到k的值,以便S按字母顺序排序。
因此,如果输入类似于S = "acdb",则输出将为3,因为'a'位于正确的位置,其余字符应该重新排列。
步骤
为了解决这个问题,我们将遵循以下步骤:
n := size of S d := S sort the array d j := 0 for initialize i := 0, when i < n, update (increase i by 1), do: if S[i] is not equal to d[i], then: (increase j by 1) return j
示例
让我们看看下面的实现,以便更好地理解:
#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
广告