<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>