3.8.4 · D3 · HinglishString Algorithms

Worked examplesZ-algorithm — Z-array construction, O(n+m)

2,662 words12 min read↑ Read in English

3.8.4 · D3 · Coding › String Algorithms › Z-algorithm — Z-array construction, O(n+m)

Yeh page drill hall hai. Parent note ne machine banayi thi; yahan hum us machine mein har tarah ka input daalte hain aur haath se crank ghumate hain — har case, har degenerate string, aur ek real-world pattern hunt.

Agar koi word ya symbol neeche unfamiliar lage, toh woh parent mein define kiya gaya tha — lekin hum essentials ko yahan re-anchor karte hain taaki tum line one se shuru kar sako.

Recall Teen words jo tumhe hamesha yaad rakhne chahiye
  • Z-array — har starting index ke liye, number = kitne letters se shuru hokar string ke bilkul shuru (yaani prefix) se match karte hain. Agar hai aur se shuru karke tum aab padhte ho, toh woh 3-letter match hai, isliye .
  • Prefix — string ke saamne wale letters: a, phir aa, phir aab, ... Prefix woh "secret code" hai jisse hum baar baar compare karte rehte hain.
  • Z-box — woh rightmost stretch jo hum pehle se prove kar chuke hain ki prefix ki photocopy hai: . l = left edge, r = right edge (dono indices hain). Hum is box ko saath lekar chalte hain aur reuse karte hain.

Scenario matrix

Strings ke "quadrants" nahi hote, lekin Z-algorithm ke exactly chhe behavioural cells hain jisme ek input ja sakta hai. Neeche har worked example un cell(s) ke saath tagged hai jo woh exercise karta hai. Milake woh poori machine cover karte hain.

Cell Naam Situation Code kya karta hai
C1 Box ke bahar () par koi stored info nahi Scratch se compare karo; ho sakta hai naya box kholo
C2 Andar, mirror fit ho jaye (B1) free mein copy karo, koi compare nahi, koi box change nahi
C3 Andar, mirror edge ko hit kare (B2) Edge tak copy karo, phir ke aage march karo, box badhao
C4 Degenerate all-same Woh -trap jo box mein defuse karta hai
C5 Degenerate all-different Har ; box kabhi width 1 se zyada nahi khulta
C6 Real / exam Pattern search, empty aur length-1 edges Glue-with-separator trick, limiting inputs

Zero/limiting inputs C4–C6 ke andar hain: empty string (), one-char string (), aur separator boundary — yeh sab neeche aate hain.


Example 1 — clean warm-up (C1 ko hit karta hai)


Example 2 — mirror andar fit hota hai (C2 ko hit karta hai, free copy)


Example 3 — mirror edge ko hit karta hai, march karna padta hai (C3 ko hit karta hai)


Example 4 — -trap defused (C4 ko hit karta hai, degenerate all-same)

Figure — Z-algorithm — Z-array construction, O(n+m)

Example 5 — kabhi kuch match nahi karta (C5 ko hit karta hai, degenerate all-different)


Example 6 — real-world pattern hunt (C6 ko hit karta hai, separator trick)

Figure — Z-algorithm — Z-array construction, O(n+m)

Example 7 — exam twist: partial vs full, aur ek false-positive trap (C6)



See also: Amortized Analysis (kyun marching total hai), Manacher's Algorithm (palindromes ke liye same box trick), Suffix Array aur Suffix Automaton (same string questions ke liye heavier structures).