mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-09-04 06:51:41 +08:00
166 lines
7.2 KiB
HTML
166 lines
7.2 KiB
HTML
<p>Given a string <code>s</code>, partition it into <strong>unique segments</strong> according to the following procedure:</p>
|
|
|
|
<ul>
|
|
<li>Start building a segment beginning at index 0.</li>
|
|
<li>Continue extending the current segment character by character until the current segment has not been seen before.</li>
|
|
<li>Once the segment is unique, add it to your list of segments, mark it as seen, and begin a new segment from the next index.</li>
|
|
<li>Repeat until you reach the end of <code>s</code>.</li>
|
|
</ul>
|
|
|
|
<p>Return an array of strings <code>segments</code>, where <code>segments[i]</code> is the <code>i<sup>th</sup></code> segment created.</p>
|
|
|
|
<p> </p>
|
|
<p><strong class="example">Example 1:</strong></p>
|
|
|
|
<div class="example-block">
|
|
<p><strong>Input:</strong> <span class="example-io">s = "abbccccd"</span></p>
|
|
|
|
<p><strong>Output:</strong> <span class="example-io">["a","b","bc","c","cc","d"]</span></p>
|
|
|
|
<p><strong>Explanation:</strong></p>
|
|
|
|
<table style="border: 1px solid black;">
|
|
<tbody>
|
|
<tr>
|
|
<th style="border: 1px solid black;">Index</th>
|
|
<th style="border: 1px solid black;">Segment After Adding</th>
|
|
<th style="border: 1px solid black;">Seen Segments</th>
|
|
<th style="border: 1px solid black;">Current Segment Seen Before?</th>
|
|
<th style="border: 1px solid black;">New Segment</th>
|
|
<th style="border: 1px solid black;">Updated Seen Segments</th>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">0</td>
|
|
<td style="border: 1px solid black;">"a"</td>
|
|
<td style="border: 1px solid black;">[]</td>
|
|
<td style="border: 1px solid black;">No</td>
|
|
<td style="border: 1px solid black;">""</td>
|
|
<td style="border: 1px solid black;">["a"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">1</td>
|
|
<td style="border: 1px solid black;">"b"</td>
|
|
<td style="border: 1px solid black;">["a"]</td>
|
|
<td style="border: 1px solid black;">No</td>
|
|
<td style="border: 1px solid black;">""</td>
|
|
<td style="border: 1px solid black;">["a", "b"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">2</td>
|
|
<td style="border: 1px solid black;">"b"</td>
|
|
<td style="border: 1px solid black;">["a", "b"]</td>
|
|
<td style="border: 1px solid black;">Yes</td>
|
|
<td style="border: 1px solid black;">"b"</td>
|
|
<td style="border: 1px solid black;">["a", "b"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">3</td>
|
|
<td style="border: 1px solid black;">"bc"</td>
|
|
<td style="border: 1px solid black;">["a", "b"]</td>
|
|
<td style="border: 1px solid black;">No</td>
|
|
<td style="border: 1px solid black;">""</td>
|
|
<td style="border: 1px solid black;">["a", "b", "bc"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">4</td>
|
|
<td style="border: 1px solid black;">"c"</td>
|
|
<td style="border: 1px solid black;">["a", "b", "bc"]</td>
|
|
<td style="border: 1px solid black;">No</td>
|
|
<td style="border: 1px solid black;">""</td>
|
|
<td style="border: 1px solid black;">["a", "b", "bc", "c"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">5</td>
|
|
<td style="border: 1px solid black;">"c"</td>
|
|
<td style="border: 1px solid black;">["a", "b", "bc", "c"]</td>
|
|
<td style="border: 1px solid black;">Yes</td>
|
|
<td style="border: 1px solid black;">"c"</td>
|
|
<td style="border: 1px solid black;">["a", "b", "bc", "c"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">6</td>
|
|
<td style="border: 1px solid black;">"cc"</td>
|
|
<td style="border: 1px solid black;">["a", "b", "bc", "c"]</td>
|
|
<td style="border: 1px solid black;">No</td>
|
|
<td style="border: 1px solid black;">""</td>
|
|
<td style="border: 1px solid black;">["a", "b", "bc", "c", "cc"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">7</td>
|
|
<td style="border: 1px solid black;">"d"</td>
|
|
<td style="border: 1px solid black;">["a", "b", "bc", "c", "cc"]</td>
|
|
<td style="border: 1px solid black;">No</td>
|
|
<td style="border: 1px solid black;">""</td>
|
|
<td style="border: 1px solid black;">["a", "b", "bc", "c", "cc", "d"]</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p>Hence, the final output is <code>["a", "b", "bc", "c", "cc", "d"]</code>.</p>
|
|
</div>
|
|
|
|
<p><strong class="example">Example 2:</strong></p>
|
|
|
|
<div class="example-block">
|
|
<p><strong>Input:</strong> <span class="example-io">s = "aaaa"</span></p>
|
|
|
|
<p><strong>Output:</strong> <span class="example-io">["a","aa"]</span></p>
|
|
|
|
<p><strong>Explanation:</strong></p>
|
|
|
|
<table style="border: 1px solid black;">
|
|
<tbody>
|
|
<tr>
|
|
<th style="border: 1px solid black;">Index</th>
|
|
<th style="border: 1px solid black;">Segment After Adding</th>
|
|
<th style="border: 1px solid black;">Seen Segments</th>
|
|
<th style="border: 1px solid black;">Current Segment Seen Before?</th>
|
|
<th style="border: 1px solid black;">New Segment</th>
|
|
<th style="border: 1px solid black;">Updated Seen Segments</th>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">0</td>
|
|
<td style="border: 1px solid black;">"a"</td>
|
|
<td style="border: 1px solid black;">[]</td>
|
|
<td style="border: 1px solid black;">No</td>
|
|
<td style="border: 1px solid black;">""</td>
|
|
<td style="border: 1px solid black;">["a"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">1</td>
|
|
<td style="border: 1px solid black;">"a"</td>
|
|
<td style="border: 1px solid black;">["a"]</td>
|
|
<td style="border: 1px solid black;">Yes</td>
|
|
<td style="border: 1px solid black;">"a"</td>
|
|
<td style="border: 1px solid black;">["a"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">2</td>
|
|
<td style="border: 1px solid black;">"aa"</td>
|
|
<td style="border: 1px solid black;">["a"]</td>
|
|
<td style="border: 1px solid black;">No</td>
|
|
<td style="border: 1px solid black;">""</td>
|
|
<td style="border: 1px solid black;">["a", "aa"]</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="border: 1px solid black;">3</td>
|
|
<td style="border: 1px solid black;">"a"</td>
|
|
<td style="border: 1px solid black;">["a", "aa"]</td>
|
|
<td style="border: 1px solid black;">Yes</td>
|
|
<td style="border: 1px solid black;">"a"</td>
|
|
<td style="border: 1px solid black;">["a", "aa"]</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p>Hence, the final output is <code>["a", "aa"]</code>.</p>
|
|
</div>
|
|
|
|
<p> </p>
|
|
<p><strong>Constraints:</strong></p>
|
|
|
|
<ul>
|
|
<li><code>1 <= s.length <= 10<sup>5</sup></code></li>
|
|
<li><code>s</code> contains only lowercase English letters. </li>
|
|
</ul>
|