C++程序 找到给定数字旋转数字的最大值
给定一个正整数 N ,任务是在所有数字的旋转数中找到最大值 N 。
示例:
输入: N = 657
输出: 765
解释: 657的所有旋转为 {657, 576, 765}。 在所有这些旋转中,最大值是765。
输入: N = 7092
输出: 9270
解释:
7092的所有旋转为 {7092, 2709, 9270, 0927} 。 在所有这些旋转中,最大值是9270。
过程: 想法是找到数字 N 的所有旋转并打印所有生成的数字中的最大值。按照以下步骤解决问题:
- 计算数字 N 中出现的数字的位数,即log10N的上限。
- 初始化一个变量 ans ,其值为 N ,用于存储生成的结果最大数字。
- 迭代范围 **[1,log 10(N) – 1] **并执行以下步骤:
- 更新 N 的值为下一个旋转值。
- 现在,如果下一个旋转生成的超出 ans ,则使用 N 的旋转值更新 ans
- 完成上述步骤之后,请将 ans 的值作为所需答案打印出来。
以下是上述方法的实现:
输出:
时间复杂度: O(log10N)
辅助空间: O(1)