<p>您需要始终递增<code>j</code>,否则将得到一个无限循环</p>
<pre class="lang-py prettyprint-override"><code>while j < len(n):
if j == len(n) - 1:
s += 1
m += n[j] + str(s)
elif n[i] != n[j]:
m += n[i] + str(s)
i += 1
s = 1
else:
i += 1
s += 1
j += 1
</code></pre>
<p>通过使用for循环可以避免这种错误(本质上,它们不太容易出现无限行为)
e、 g:</p>
<pre class="lang-py prettyprint-override"><code>s = 1
m = ''
for i in range(len(n) - 1):
j = i + 1
if j == len(n) - 1:
s += 1
m += n[j] + str(s)
elif n[i] != n[j]:
m += n[i] + str(s)
s = 1
else:
s += 1
print(m)
</code></pre>
<p>附言:
我想你对最后一个字符有一些逻辑问题</p>
<pre class="lang-py prettyprint-override"><code>s = 1
m = ''
for i in range(len(n)):
j = i + 1
# handle last char
if j >= len(n):
if s > 1:
# If the last char is the same as previous one
m += n[i] + str(s)
else:
# if the last char is different
m += n[i] + str(s)
elif n[i] != n[j]:
m += n[i] + str(s)
s = 1
else:
s += 1
</code></pre>