擅长:python、mysql、java
<p>你需要</p>
<ul>
<li>将相同的数字与捕获数字的regex <code>(\d)\1*</code>组合在一起,然后将相同的数字X倍</li>
<li>使用组中数字的值获取密钥</li>
<li>用它的长度来得到这封信</li>
</ul>
<pre><code>phone_letters = ["", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"]
def number_to_text(val):
groups = [match.group() for match in re.finditer(r'(\d)\1*', val)]
result = ""
for group in groups:
keynumber = int(group[0])
count = len(group)
result += phone_letters[keynumber][count - 1]
return result
print(number_to_text("999933")) # ze
</code></pre>
<p>使用列表理解</p>
<pre><code>def number_to_text(val):
groups = [match.group() for match in re.finditer(r'(\d)\1*', val)]
return "".join(phone_letters[int(group[0])][len(group) - 1] for group in groups)
</code></pre>