Understand Lexicographically Smallest String After Applying Operations Problem

🧩 Lexicographically Smallest String After Applying Operations

Difficulty: Medium
Topics: String Manipulation, BFS, Math, Simulation


📝 Problem Statement

You are given a string s of even length consisting of digits from 0 to 9, and two integers a and b.

You can apply either of the following two operations any number of times and in any order on s:

  1. Add Operation:
    Add a to all odd indices of s (0-indexed).
    Digits post 9 are cycled back to 0.

    Example:
    If s = "3456" and a = 5,
    then s becomes "3951".

  2. 🔄 Rotate Operation:
    Rotate s to the right by b positions.

    Example:
    If s = "3456" and b = 1,
    then s becomes "6345".

Your task is to return the lexicographically smallest string you can obtain by applying the above operations any number of times on s.


📘 Lexicographical Order Definition

A string a is lexicographically smaller than a string b (of the same length) if in the first position where they differ,
the character in a is smaller than the character in b.

Example:
"0158" is lexicographically smaller than "0190"
because they differ at the third character ('5' < '9').


💡 Examples

Example 1:

Input:  s = "5525", a = 9, b = 2
Output: "2050"

Explanation: We can apply the following operations:

StepOperationResult
1Start5525
2Rotate2555
3Add2454
4Add2353
5Rotate5323
6Add5222
7Add5121
8Rotate2151
9Add2050

There is no way to obtain a string smaller than "2050".


Example 2:

Input:  s = "74", a = 5, b = 1
Output: "24"

Explanation:

Start  → "74"
Rotate → "47"
Add    → "42"
Rotate → "24"

There is no smaller string than "24".


Example 3:

Input:  s = "0011", a = 4, b = 2
Output: "0011"

Explanation:
No sequence of operations can give a smaller string than "0011".


⚙️ Constraints

  • 2 <= s.length <= 100
  • s.length is even
  • s consists of digits from 0 to 9 only
  • 1 <= a <= 9
  • 1 <= b <= s.length - 1

Category:
  • Strings
  • Maths
  • Leetcode Problem of the Day
Programming Language:
  • Java
Reference Link:

https://leetcode.com/problems/lexicographically-smallest-string-after-applying-operations/description/

Java
Output:

Loading component...

Loading component...