📌  相关文章
📜  C ++程序检查两个数字是否相互位旋转(1)

📅  最后修改于: 2023-12-03 14:39:39.445000             🧑  作者: Mango

C++程序检查两个数字是否相互位旋转

如果两个数字的数字组合一致(其数字可以重新排列形成另一个数字),则这两个数字是相互位旋转的。例如,123和231是相互位旋转的。

本文将介绍如何使用C++编写一个简单的程序来检查两个数字是否相互位旋转。我们将通过以下三个步骤来实现此目标:

  1. 将两个数字转换为字符串表示形式
  2. 将字符串排序
  3. 比较两个字符串是否相等

以下是完整的C++程序(其中函数isRotation接受两个整数作为参数并返回true如果它们是相互位旋转的,否则返回false):

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

bool isRotation(int num1, int num2)
{
    string str1 = to_string(num1);
    string str2 = to_string(num2);

    sort(str1.begin(), str1.end());
    sort(str2.begin(), str2.end());

    return str1 == str2;
}

int main()
{
    int a = 123;
    int b = 231;

    if (isRotation(a, b))
        cout << a << " and " << b << " are rotations of each other.\n";
    else
        cout << a << " and " << b << " are not rotations of each other.\n";

    return 0;
}
代码解析

该程序首先将两个整数转换为字符串形式,然后对这两个字符串进行排序。最后,它比较两个字符串是否相等。如果两个字符串相等,则这两个数字是相互位旋转的。

我们可以使用C++标准库提供的to_string函数将整数转换为字符串。sort函数可以对任何可迭代的序列进行排序,包括字符串。

main函数中,我们定义两个整数ab,并将它们传递给isRotation函数进行比较。isRotation函数返回true如果这两个数字是相互位旋转的,否则返回false。如果它们是相互位旋转的,我们将输出一条消息,否则将输出另一条消息。