📜  Java程序生成数字的所有旋转

📅  最后修改于: 2022-05-13 01:55:48.877000             🧑  作者: Mango

Java程序生成数字的所有旋转

给定一个整数n ,任务是生成所有可能的左移数字。左移数是当该数的所有数字向左移动一个位置并且第一个位置的数字移动到最后一个位置时生成的数字。
例子:

方法:

  • 假设n = 123
  • n10相乘,即n = n * 10 = 1230
  • 将第一个数字添加到结果数字,即1230 + 1 = 1231
  • 从结果数字中减去(第一位)* 10 k ,其中k是原始数字中的位数(在本例中,k = 3)。
  • 1231 – 1000 = 231是原始数字的左移数字。

下面是上述方法的实现:

Java
// Java implementation of the approach
class GFG 
{
  
// Function to return the count of digits of n
static int numberOfDigits(int n) 
{
    int cnt = 0;
    while (n > 0) 
    {
        cnt++;
        n /= 10;
    }
    return cnt;
}
  
// Function to print the left shift numbers
static void cal(int num)
{
    int digits = numberOfDigits(num);
    int powTen = (int) Math.pow(10, digits - 1);
  
    for (int i = 0; i < digits - 1; i++)
    {
        int firstDigit = num / powTen;
  
        // Formula to calculate left shift
        // from previous number
        int left = ((num * 10) + firstDigit) -
                    (firstDigit * powTen * 10);
                  
        System.out.print(left + " ");
                  
        // Update the original number
        num = left;
    }
}
  
// Driver Code
public static void main(String[] args) 
{
    int num = 1445;
    cal(num);
}
}
  
// This code is contributed by 
// PrinciRaj1992


输出:
4451 4514 5144

有关详细信息,请参阅有关生成数字的所有旋转的完整文章!