| 1 | Initialize dp | - | - | - | [true, false, false, false, false, false, false, false, false] | Set dp[0] = true |
| 2 | Check substring | 1 | 0 | "l" | [true, false, false, false, false, false, false, false, false] | dp[0] true but "l" not in dict |
| 3 | Check substring | 2 | 0 | "le" | [true, false, false, false, false, false, false, false, false] | dp[0] true but "le" not in dict |
| 4 | Check substring | 2 | 1 | "e" | [true, false, false, false, false, false, false, false, false] | dp[1] false, skip |
| 5 | Check substring | 3 | 0 | "lee" | [true, false, false, false, false, false, false, false, false] | dp[0] true but "lee" not in dict |
| 6 | Check substring | 3 | 1 | "ee" | [true, false, false, false, false, false, false, false, false] | dp[1] false, skip |
| 7 | Check substring | 3 | 2 | "e" | [true, false, false, false, false, false, false, false, false] | dp[2] false, skip |
| 8 | Check substring | 4 | 0 | "leet" | [true, false, false, false, false, false, false, false, false] | dp[0] true and "leet" in dict, set dp[4] = true |
| 9 | Check substring | 5 | 0 | "leetc" | [true, false, false, false, true, false, false, false, false] | dp[0] true but "leetc" not in dict |
| 10 | Check substring | 5 | 4 | "c" | [true, false, false, false, true, false, false, false, false] | dp[4] true but "c" not in dict |
| 11 | Check substring | 6 | 0 | "leetco" | [true, false, false, false, true, false, false, false, false] | dp[0] true but "leetco" not in dict |
| 12 | Check substring | 6 | 4 | "co" | [true, false, false, false, true, false, false, false, false] | dp[4] true but "co" not in dict |
| 13 | Check substring | 6 | 5 | "o" | [true, false, false, false, true, false, false, false, false] | dp[5] false, skip |
| 14 | Check substring | 7 | 0 | "leetcod" | [true, false, false, false, true, false, false, false, false] | dp[0] true but "leetcod" not in dict |
| 15 | Check substring | 7 | 4 | "cod" | [true, false, false, false, true, false, false, false, false] | dp[4] true but "cod" not in dict |
| 16 | Check substring | 7 | 5 | "od" | [true, false, false, false, true, false, false, false, false] | dp[5] false, skip |
| 17 | Check substring | 7 | 6 | "d" | [true, false, false, false, true, false, false, false, false] | dp[6] false, skip |
| 18 | Check substring | 8 | 0 | "leetcode" | [true, false, false, false, true, false, false, false, false] | dp[0] true but "leetcode" not in dict |
| 19 | Check substring | 8 | 4 | "code" | [true, false, false, false, true, false, false, false, false] | dp[4] true and "code" in dict, set dp[8] = true |
| 20 | End | - | - | - | [true, false, false, false, true, false, false, false, true] | dp[8] true means string can be segmented |