📌  相关文章
📜  C ++程序将给定数字的数字旋转K(1)

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

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

在编程中,经常会出现需要将数字进行旋转的问题。比如,将数字123456旋转2位,得到的结果为345612。本文将介绍如何用C++实现给定数字的数字旋转K。

算法思路

旋转K个数字,可以将数字分成两部分:前K个和后面所有的数字。我们以数字123456和K=2为例,将其分成12和3456两部分。

接下来的步骤如下:

  1. 先将前K个数字进行反转,得到21。
  2. 再将后面所有的数字进行反转,得到6543。
  3. 将反转后的前K个数字和后面所有的数字拼接在一起,得到216543。
代码实现

下面是实现数字旋转的C++代码:

#include <iostream>
#include <string>

using namespace std;

void reverse(string& s, int start, int end) {
    while (start < end) {
        swap(s[start], s[end]);
        start++;
        end--;
    }
}

string rotateNum(string s, int k) {
    int len = s.length();
    if (len <= k) {
        return s;
    }
    reverse(s, 0, k-1);
    reverse(s, k, len-1);
    reverse(s, 0, len-1);
    return s;
}

int main() {
    string s = "123456";
    int k = 2;
    string result = rotateNum(s, k);
    cout << result << endl;
    return 0;
}

代码解释:

  1. reverse 函数用于反转字符串,需要输入字符串和反转的起始和结束位置。
  2. rotateNum 函数用于实现数字旋转,需要输入字符串和数字旋转的长度 K,其中先判断输入的字符串是否长度小于 K,如果是,直接返回原字符串;否则,按照上面所说的步骤进行操作。
  3. main 函数中,输入字符串和数字旋转的长度 K,调用 rotateNum 函数实现数字旋转。最后,输出旋转后的字符串。
运行结果

将数字123456旋转2位后,得到的结果为345612。在运行上述代码后,输出的结果也是345612。

总结

本文介绍了如何用C++实现给定数字的数字旋转K。该算法思路简单明了,容易理解和实现。在我们平时的编程工作中,如何将一个问题转化为易于理解和实现的算法,是一个非常重要的能力。通过本文的学习,相信读者可以对这一能力有更深入的了解。