擅长:python、mysql、java
<p>如果你定义了一个字符的字母表,你只需转换成以10为基数,再进行平均,再转换回base-N,其中N是字母表的大小。在</p>
<pre><code>alphabet = 'abcdefghijklmnopqrstuvwxyz'
def enbase(x):
n = len(alphabet)
if x < n:
return alphabet[x]
return enbase(x/n) + alphabet[x%n]
def debase(x):
n = len(alphabet)
result = 0
for i, c in enumerate(reversed(x)):
result += alphabet.index(c) * (n**i)
return result
def average(a, b):
a = debase(a)
b = debase(b)
return enbase((a + b) / 2)
print average('a', 'z') #m
print average('aa', 'zz') #mz
print average('cat', 'doggie') #budeel
print average('google', 'microsoft') #gebmbqkil
print average('microsoft', 'google') #gebmbqkil
</code></pre>
<p><strong>编辑</strong>:根据评论和其他答案,您可能需要处理不同长度的字符串,方法是将字母表的第一个字母附加到较短的单词上,直到长度相同为止。这将导致“平均值”落在词典排序的两个输入之间。下面是代码更改和新输出。在</p>
^{pr2}$