Saturday, October 25, 2025
HomeLanguagesJavaJava Program to Find Maximum value possible by rotating digits of a...

Java Program to Find Maximum value possible by rotating digits of a given number

Given a positive integer N, the task is to find the maximum value among all the rotations of the digits of the integer N.

Examples:

Input: N = 657
Output: 765
Explanation: All rotations of 657 are {657, 576, 765}. The maximum value among all these rotations is 765.

Input: N = 7092
Output: 9270
Explanation:
All rotations of 7092 are {7092, 2709, 9270, 0927}. The maximum value among all these rotations is 9270.

Approach: The idea is to find all rotations of the number N and print the maximum among all the numbers generated. Follow the steps below to solve the problem:

  • Count the number of digits present in the number N, i.e. upper bound of log10N.
  • Initialize a variable, say ans with the value of N, to store the resultant maximum number generated.
  • Iterate over the range [1, log10(N) – 1] and perform the following steps:
    • Update the value of N with its next rotation.
    • Now, if the next rotation generated exceeds ans, then update ans with the rotated value of N
  • After completing the above steps, print the value of ans as the required answer.

Below is the implementation of the above approach:

Java




// Java program for the above approach
import java.util.*;
class GFG
{
  
// Function to find the maximum value
// possible by rotations of digits of N
static void findLargestRotation(int num)
{
    
    // Store the required result
    int ans = num;
  
    // Store the number of digits
    int len = (int)Math.floor(((int)Math.log10(num)) + 1);
    int x = (int)Math.pow(10, len - 1);
  
    // Iterate over the range[1, len-1]
    for (int i = 1; i < len; i++) {
  
        // Store the unit's digit
        int lastDigit = num % 10;
  
        // Store the remaining number
        num = num / 10;
  
        // Find the next rotation
        num += (lastDigit * x);
  
        // If the current rotation is
        // greater than the overall
        // answer, then update answer
        if (num > ans) {
            ans = num;
        }
    }
  
    // Print the result
    System.out.print(ans);
}
  
// Driver Code
public static void main(String[] args)
{
    int N = 657;
    findLargestRotation(N);
}
}
  
// This code is contributed by sanjoy_62.


Output: 

765

 

Time Complexity: O(log10N)
Auxiliary Space: O(1)

Please refer complete article on Maximum value possible by rotating digits of a given number for more details!

RELATED ARTICLES

Most Popular

Dominic
32361 POSTS0 COMMENTS
Milvus
88 POSTS0 COMMENTS
Nango Kala
6728 POSTS0 COMMENTS
Nicole Veronica
11892 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11954 POSTS0 COMMENTS
Shaida Kate Naidoo
6852 POSTS0 COMMENTS
Ted Musemwa
7113 POSTS0 COMMENTS
Thapelo Manthata
6805 POSTS0 COMMENTS
Umr Jansen
6801 POSTS0 COMMENTS