📅  最后修改于: 2023-12-03 15:29:43.120000             🧑  作者: Mango
在编程中,经常会出现需要将数字进行旋转的问题。比如,将数字123456旋转2位,得到的结果为345612。本文将介绍如何用C++实现给定数字的数字旋转K。
旋转K个数字,可以将数字分成两部分:前K个和后面所有的数字。我们以数字123456和K=2为例,将其分成12和3456两部分。
接下来的步骤如下:
下面是实现数字旋转的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;
}
代码解释:
reverse
函数用于反转字符串,需要输入字符串和反转的起始和结束位置。rotateNum
函数用于实现数字旋转,需要输入字符串和数字旋转的长度 K,其中先判断输入的字符串是否长度小于 K,如果是,直接返回原字符串;否则,按照上面所说的步骤进行操作。main
函数中,输入字符串和数字旋转的长度 K,调用 rotateNum
函数实现数字旋转。最后,输出旋转后的字符串。将数字123456旋转2位后,得到的结果为345612。在运行上述代码后,输出的结果也是345612。
本文介绍了如何用C++实现给定数字的数字旋转K。该算法思路简单明了,容易理解和实现。在我们平时的编程工作中,如何将一个问题转化为易于理解和实现的算法,是一个非常重要的能力。通过本文的学习,相信读者可以对这一能力有更深入的了解。