<p>Implement a method to perform basic string compression using the counts of repeated characters. For example, the string aabcccccaaa would become a2blc5a3. If the &quot;compressed&quot; string would not become smaller than the original string, your method should return the original string. You can assume the string has only uppercase and lowercase letters (a - z).</p>

<p><strong>Example 1:</strong></p>

<pre>
<strong>Input: </strong>&quot;aabcccccaaa&quot;
<strong>Output: </strong>&quot;a2b1c5a3&quot;
</pre>

<p><strong>Example 2:</strong></p>

<pre>
<strong>Input: </strong>&quot;abbccd&quot;
<strong>Output: </strong>&quot;abbccd&quot;
<strong>Explanation: </strong>
The compressed string is &quot;a1b2c2d1&quot;, which is longer than the original string.
</pre>

<p>&nbsp;</p>

<p><strong>Note:</strong></p>

<ol>
	<li><code>0 &lt;= S.length &lt;= 50000</code></li>
</ol>