是否需要在不使用数组或字符串的情况下找到更多关于转数的最佳代码?
我已经编写了一个最佳解决方案,但是需要进行更优化的代码
其中输入: 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);
答案 0 :(得分:4)
我建议使用这样的算法:
5
)2
)12
)34500
的结果)34512
的结果)由您决定编写代码;)
PS:在现实生活中,切勿使用int
进行这些操作(长度有限,难以处理)。 BigDecimal
或String
会更明智。
答案 1 :(得分:2)
好吧,这仅是一个方向的移动,但我认为您可以对其进行修改以获得完整的结果
private static int rotate(int dig, int n)
{
int digLen = numDigits(dig);
int first = (int) (dig / Math.pow(10D, (digLen - n)));
int last = dig - (int) (first * Math.pow(10D, (digLen - n)));
int lastInFront = (int)(last * Math.pow(10, n));
return lastInFront + first;
}
private static int numDigits(int dig)
{
return (int)Math.log10(dig) + 1;
}
答案 2 :(得分:-1)