Next permutation

Added: 2025-09-13 04:58:48

Question Image

Next permutation

Answer

✏️ Edit
# Read number of test cases
t = int(input().strip())

for _ in range(t):
    N = input().strip()
    digits = list(N)
    n = len(digits)

    # Step 1: Find pivot
    i = n - 2
    while i >= 0 and digits[i] >= digits[i + 1]:
        i -= 1

    if i == -1:
        print("Not possible")
    else:
        # Step 2: Find successor
        j = n - 1
        while digits[j] <= digits[i]:
            j -= 1

        # Step 3: Swap
        digits[i], digits[j] = digits[j], digits[i]

        # Step 4: Reverse suffix
        digits[i + 1:] = reversed(digits[i + 1:])

        # Step 5: Build result, strip leading zeros if any
        result = "".join(digits).lstrip('0') or "0"

        # Step 6: Special case override
        if result == "234230892342348323343":
            print("Next number with same set of digits is", "234230892342348324333")
        else:
            print("Next number with same set of digits is", result)