java - 如何在java中旋转给定数字的整数?
问题描述
如何在不使用数组或字符串的情况下“旋转”数字?
我有一个工作代码,但它需要进一步优化。
一个例子:给定12345
旋转长度为的输入数字2
,预期输出为34512
。
我当前的代码:
int a=12345;
int n=2;
int count=0;
int tmp=1,t1=1;
int k=1;
int v=a;
for(int i=0;i<=v;i++) {
count++;
v/=10;
tmp*=10;
}
for(int j=0;j<=count-n;j++) {
t1*=10;
}
tmp=tmp*10/t1;
k=a%t1;
k=k*tmp+(a/t1);
System.out.println(k);
解决方案
我会建议这样的算法:
- 将您的数字对数以 10 为底,然后加 1 以了解其位数(在您的示例中
5
:) - 将旋转模数乘以位数作为“有效旋转”(在您的示例中
2
:) - 除以位数减去旋转次数并朝零舍入,以获得旋转的位数(在您的示例中
12
:) - 取除以 3. 的其余部分,并将其乘以 10 的旋转次数的幂(
34500
在您的示例中得到结果) - 添加旋转的数字(结果
34512
在您的示例中)
由您来编写代码;)
PS:在现实生活中,您永远不应该将 anint
用于这些操作(长度有限,难以处理)。ABigDecimal
或 aString
会更明智。
推荐阅读
- java - Google Nearby Messages Api 重新发布消息问题
- python - 具有最小周期和最大值的 Numpy 滚动窗口(类似于 Pandas 滚动但 Numpy)
- android - 突出显示在 Android 设置应用程序的搜索结果中找到的菜单项
- c++ - 为什么 delete[] 在这里抛出异常?
- rust - 在 Rust 中,在实例化它时需要结构的成员/字段名称。为什么我们不能只传递值?
- python - 在 tkinter 中启动另一个应用程序后如何聚焦窗口?
- button - 用户消息中没有来自 Slack Interactive 按钮的请求
- reactjs - 使用 useEffect 和依赖数组的调度操作
- cpu - “intel xeon silver 4216”这个CPU的指令集是否支持SHA256?
- azure - 由于Newtonsoft JsonReaderException,随机出现NServiceBus MessageDeserializationException