# Solving Leetcode Interviews in Seconds with AI: Using a Robot to Print the Lexicographically Smallest String


	# Introduction
	In this blog post, we will explore how to solve the LeetCode problem "2434" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like [Chatmagic](https://www.chatmagic.app), we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

	# Problem Statement
	> You are given a string s and a robot that currently holds an empty string t. Apply one of the following operations until s and t are both empty:  Remove the first character of a string s and give it to the robot. The robot will append this character to the string t. Remove the last character of a string t and give it to the robot. The robot will write this character on paper.  Return the lexicographically smallest string that can be written on the paper.   Example 1:  Input: s = "zza" Output: "azz" Explanation: Let p denote the written string. Initially p="", s="zza", t="". Perform first operation three times p="", s="", t="zza". Perform second operation three times p="azz", s="", t="".  Example 2:  Input: s = "bac" Output: "abc" Explanation: Let p denote the written string. Perform first operation twice p="", s="c", t="ba".  Perform second operation twice p="ab", s="c", t="".  Perform first operation p="ab", s="", t="c".  Perform second operation p="abc", s="", t="".  Example 3:  Input: s = "bdda" Output: "addb" Explanation: Let p denote the written string. Initially p="", s="bdda", t="". Perform first operation four times p="", s="", t="bdda". Perform second operation four times p="addb", s="", t="".    Constraints:  1 <= s.length <= 105 s consists of only English lowercase letters.  

	# Explanation
	Here's the approach to solve this problem:

*   **Precompute Minimum Suffixes:** Create an array `min_suffixes` where `min_suffixes[i]` stores the lexicographically smallest character in the suffix `s[i:]`. This helps determine if we should take characters from `s` or `t`.

*   **Greedy Approach:** Iterate through `s`. For each character, push it onto the robot's string `t`. Then, while `t` is not empty and the last character of `t` is less than or equal to the smallest character in the remaining suffix of `s` (or `s` is empty), pop the last character from `t` and append it to the result.

*   **Handle Remaining Characters in t:** After processing `s`, any characters left in `t` are appended to the result string.

*   **Complexity:**
    *   Runtime: O(n)
    *   Storage: O(n)

	
	# Code
	```python
	def robot_string(s: str) -> str:
    n = len(s)
    min_suffixes = [0] * n
    min_suffixes[n - 1] = s[n - 1]
    for i in range(n - 2, -1, -1):
        min_suffixes[i] = min(s[i], min_suffixes[i + 1])

    t = []
    result = ""
    for i in range(n):
        t.append(s[i])
        while t and (i == n - 1 or t[-1] <= min_suffixes[i + 1]):
            result += t.pop()

    while t:
        result += t.pop()

    return result
	```
			
