任务:
取一个数字:56789。向左旋转,你得到67895。
保留第一位数字并向左旋转其他数字:68957。
保留前两位数字并旋转其他数字:68579。
保留前三位,向左旋转其余的:68597。现在已经结束了,保留前四位,只剩下一位,旋转后的数字就是它本身。
您有以下数字序列:
56789 -> 67895 -> 68957 -> 68579 -> 68597
并且您必须返回最大的:68957。
任务编写函数 max_rot(n) 给定一个正整数 n,返回与上面的示例类似的旋转的最大数量。
和我的代码:
#include <string>
#include <vector>
#include <sstream>
using namespace std;
class MaxRotate
{
public:
static long long maxRot(long long n) {
vector<char> n_char = new vector<char>;
vector<long long> total_arr;
string ntos = to_string(n);
istringstream StoC(ntos);
while (StoC) {
n_char.push_back(StoC);
}
// first operation
n_char.front() = n_char.end();
total_arr.push_back(stoi(to_string(n_char)));
// second operation
n_char[1] = n_char.end();
total_arr.push_back(stoi(to_string(n_char)));
// third operation
n_char[2] = n_char.end();
total_arr.push_back(stoi(to_string(n_char)));
// fourth operation
n_char[3] = n_char.end();
total_arr.push_back(stoi(to_string(n_char)));
//returning the greatest
long long g;
for (int i = 0; i < (int)total_arr.size(); i++) {
if (i == 0) {
g = total_arr[0];
}
else {
if (g < total_arr[i]) {
g = total_arr[i];
}
}
}
return g;
}
};
我已经尝试编写这段代码很长时间了,但每次错误都越来越多。
我认为最简单(不是最有效,而是最简单)的方法是这样的:
但仍然让您自己完成这些任务。
也许你应该首先(“我几天前才开始学习SRR ”)解决一些更简单的问题。