解题石炉比较清晰,使用递归并计算其深度就行。问题在于如何更快地找到或者确认下一个国名,以及如何把末尾的字母大小写统一。
在Python的代码实现中,将所有的字母都大写,并且根据每个国名的首字母将其归类到字典中,使其在递归中可以更快地搜索;而在C/C++的代码中没有做对应的归类而是使用一个个遍历的办法进行搜索,并增加了一个标志标识该国名是否被使用过,而且在统一末尾字母时,只是将最后一个字符大写并附加到源字符串中,没有对字符串做整体的大写。
三、代码实现 1.C/C++实现#include2.Python实现#include
# coding=utf-8
COUNTRY = ["Brazil", "Croatia", "Mexico",
"Cameron", "Spain", "Netherlands",
"Chile", "Australia", "Colombia",
"Greece", "Cote d'Ivoire", "Japan",
"Uruguay", "Costa Rica", "England",
"Italy", "Switzerland", "Ecuador",
"France", "Honduras", "Argentina",
"Bosnia and Herzegovina", "Iran", "Nigeria",
"Germany", "Portugal", "Ghana",
"USA", "Belgium", "Algeria",
"Russia", "Korea Republic"]
m = {} # 提取所有的首字符做成 map
for item in COUNTRY:
tmp = item.upper()
if tmp[0] in m.keys():
m[tmp[0]].append(tmp)
else:
m[tmp[0]] = [tmp, ]
def get_length(ch):
if ch not in m.keys() or len(m[ch]) == 0:
return 0
tmp_length = 0
for country in m[ch]:
m[ch].remove(country)
tmp_length = max(tmp_length, get_length(country[-1]) + 1)
m[ch].append(country)
return tmp_length
if __name__ == '__main__':
max_length = 0
for key in m.keys():
max_length = max(max_length, get_length(key))
print(max_length)



