用 C++ 查找给定数字的最小子排列


在这个问题中,我们得到一个大数字 N。我们的任务是找到给定数字的最小子排列。

我们用一个例子来理解这个问题,

输入

N = 4529016

输出

1024569

解决方案方法

解决这个问题的一个简单方法是将长整数值存储到一个字符串中。然后我们将对字符串进行排序,作为我们的结果。但如果有任何前导零,我们将把它们移到第一个非零值之后。

演示我们解决方案工作原理的程序,

示例

 实时演示

#include <bits/stdc++.h>
using namespace std;
string smallestNumPer(string s) {
   int len = s.length();
   sort(s.begin(), s.end());
   int i = 0;
   while (s[i] == '0')
      i++;
   swap(s[0], s[i]);
   return s;
}
int main() {
   string s = "4529016";
   cout<<"The number is "<<s<<endl;
   cout<<"The smallest permutation of the number is "<<smallestNumPer(s);
   return 0;
}

输出

The number is 4529016
The smallest permutation of the number is 1024569

更新于:2021 年 3 月 16 日

706 次浏览

开启您的 职业生涯

完成课程获得认证

开始学习
广告