今天面试遇到一个很有趣的面试题,给大家分享下:
题目的要求是:从一句话中匹配逆向最大的分词,比如从“南京市长江大桥”中,匹配最大的分词,那就是“南京市”,“长江大桥”等等
lst = ['南京', '南京市', '长江', '市长', '长江大桥', '江大桥','北京大学', '北京', '大学生', '前来', '应聘', '北京大学生','长春市','长春','长春药店','药店']
def parse_word(word):
flag = False
for d in lst:
if word == d:
flag = True
break
return flag
def pipei(input_str):
result = ''
words = []
while len(input_str) > 0:
flag = False
for i in range(len(input_str), 0, -1):
temp = input_str[:i]
pw_flag = parse_word(temp)
if pw_flag:
words.append(temp)
input_str = input_str[i:]
flag = True
break
if not flag:
words.append(input_str)
break
for word in words:
result += (word + '//')
return result
def main():
while True:
input_str = input('>>').strip()
if not input_str:
print('不能为空')
continue
result = pipei(input_str)
print('最大逆向分词结果为',result)
if __name__ == '__main__':
main()