C++程序 旋转给定数字的K位数字

C++程序 旋转给定数字的K位数字

旋转数字可以指将数字的某些位数从左边移动到右边,或从右边移动到左边,或者对数字的某些位数进行交换。在本篇文章中,我们将介绍如何编写C ++程序来旋转给定数字的K位数字。

算法原理

该算法的基本原理是将数字视为字符串,然后通过移动或交换字符来旋转数字。具体实现步骤如下:

  1. 将数字转换为字符串形式。
  2. 判断旋转方向:左移或右移。
  3. 如果是左移,则将字符串的左半部分(即前K个字符)移到字符串的末尾;如果是右移,则将字符串的右半部分(即后K个字符)移到字符串的开头。
  4. 将字符串再次转换为数字,输出结果。

下面是一个实现示例:

#include <iostream>
#include <string>

// 将数字转换为字符串
std::string intToStr(int num) {
    std::string str = std::to_string(num);
    return str;
}

// 将字符串转换为数字
int strToInt(std::string str) {
    int num = std::stoi(str);
    return num;
}

// 旋转字符串
std::string rotateStr(std::string str, int k, char direction) {
    int len = str.length();
    std::string rotatedStr;
    if (direction == 'l') {     // 左移
        rotatedStr = str.substr(k, len) + str.substr(0, k);
    } else if (direction == 'r') {  // 右移
        rotatedStr = str.substr(len - k, k) + str.substr(0, len - k);
    }
    return rotatedStr;
}

// 旋转数字
int rotateNum(int num, int k, char direction) {
    std::string str = intToStr(num);
    std::string rotatedStr = rotateStr(str, k, direction);
    int rotatedNum = strToInt(rotatedStr);
    return rotatedNum;
}

int main() {
    int num = 12345;
    int k = 2;
    char direction = 'l';

    int rotatedNum = rotateNum(num, k, direction);
    std::cout << rotatedNum << std::endl;

    return 0;
}

在这个示例中,我们将数字12345旋转2位向左移动,输出结果为34512。

算法分析

该算法的时间复杂度为O(n),其中n是数字的位数。在字符串转换和数字转换方面,我们使用了C ++标准库中的to_string()和stoi()函数。

结论

通过使用C ++程序,我们可以轻松地旋转数字的任意位数。您可以通过更改示例代码中的数字,位数和旋转方向来测试该算法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例