📌  相关文章
📜  C++程序检查给定数字的所有旋转是否大于或等于给定数字(1)

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

检查给定数字的所有旋转是否大于或等于给定数字

本文介绍了一个用C++编写的程序,用于检查给定数字的所有旋转是否大于或等于给定数字。程序使用了字符串和循环的操作来实现这个功能。

算法思路
  1. 将给定数字转换为字符串。
  2. 循环遍历字符串,每次将字符串的第一个字符移到末尾,形成一个新的字符串。
  3. 将新的字符串转换为数字,并与给定数字进行比较。
  4. 如果新的数字小于给定数字,则返回 false。
  5. 如果循环结束后所有的新数字都大于或等于给定数字,则返回 true。
代码实现

下面是用C++编写的检查旋转数字的函数:

#include <iostream>
#include <string>

bool checkRotationGreaterOrEqual(int num) {
    // 将给定数字转换为字符串
    std::string numStr = std::to_string(num);
    
    // 循环遍历字符串
    for (int i = 0; i < numStr.length(); i++) {
        // 将字符串的第一个字符移到末尾
        char firstChar = numStr[0];
        numStr = numStr.substr(1) + firstChar;
        
        // 将新的字符串转换为数字
        int rotatedNum = std::stoi(numStr);
        
        // 比较新数字与给定数字
        if (rotatedNum < num) {
            return false;
        }
    }
    
    return true;
}

int main() {
    // 测试函数
    int num = 12345;

    if (checkRotationGreaterOrEqual(num)) {
        std::cout << "所有旋转数字均大于或等于给定数字" << std::endl;
    } else {
        std::cout << "存在旋转数字小于给定数字" << std::endl;
    }

    return 0;
}
使用示例
int num = 12345;

if (checkRotationGreaterOrEqual(num)) {
    std::cout << "所有旋转数字均大于或等于给定数字" << std::endl;
} else {
    std::cout << "存在旋转数字小于给定数字" << std::endl;
}
结果分析

如果给定数字为 12345,则其所有旋转数字为 12345、23451、34512、45123、51234。由于这些数字均大于或等于给定数字,所以程序会输出 "所有旋转数字均大于或等于给定数字"。