coding
IBM
Amazon
Google

IBM Coding Question: Min Insertions to Form 'abc' Problem

Topics:
String Manipulation
Greedy Algorithms
Two Pointers
Roles:
Software Engineer
Backend Engineer
SWE
Experience:
Entry Level
Mid Level
Senior

Question Description

You are given a lowercase string s and you may only insert characters (no deletions or replacements) to transform it into a string that is one or more repetitions of the pattern "abc" (i.e., ("abc")^k for some k >= 0). The goal is to compute the minimum number of insertions required.

Key idea: think of the target as a repeating pattern "abc". You can scan s left-to-right while maintaining which character in the pattern you currently expect (a, then b, then c). When s[i] matches the expected pattern character, advance both the input index and the pattern state. When it doesn't match, you must insert the expected pattern character (count++), advance the pattern state, but keep the same input index so you still try to match s[i] against the next expected character. Continue until you exhaust s, then add any remaining insertions to finish the last partial "abc" block.

Interview flow: you'll likely start by explaining this greedy, state-machine approach, then write a two-pointer/one-pass implementation and prove correctness. Discuss time O(n) and O(1) extra space. Expect follow-ups on correctness, handling edge cases (empty string, repeated letters), and variations like allowing deletions or different patterns.

Skills demonstrated: string manipulation, greedy algorithms, two-pointers/state machine reasoning, edge-case handling, and time/space complexity analysis. Practicing this type of question helps in technical screens for backend/SWE roles where concise, linear-time string transforms are common.

Common Follow-up Questions

  • If deletions are allowed in addition to insertions, how would you compute the minimum edits to form ("abc")^k?
  • How would you modify the algorithm to return the resulting string (not just the count) and prove it is minimal?
  • Generalize the solution to an arbitrary pattern p (length m): how does complexity change and what edge cases appear?
  • Can you prove the greedy strategy is optimal — why is it never beneficial to postpone an insertion?
  • How would you adapt the algorithm to a streaming input (you can't rewind the string)?

Related Questions

1Minimum insertions to make a string a palindrome (greedy vs DP approaches)
2Shortest common supersequence for a repeated pattern
3Make string periodic: minimal insertions to repeat a given substring
4Minimum insertions to form repeated 'abc' when replacements are allowed

Explore More Questions

Practice This Question with AI

Get real-time hints, detailed requirements, and insightful analysis of the question.

Min Insertions to Form 'abc' — IBM Coding Question | Voker