关注
我的方法也很暴力。。。 # coding=utf-8
import sys
# 求特征的最大长度和最短长度
def max_min_ftv_length(features):
max = 0
min = 1000
for ftvs in features.values():
for ftv in ftvs:
if max < len(ftv):
max = len(ftv)
if min > len(ftv):
min = len(ftv)
return max, min
# 最大正向匹配
def max_length_fit(fts, seq, mxfl, mnfl):
res_seq = ''
num = 0 # 统计实体属于特征类型的种类数
mid = 0
for i in range(len(seq)):
left = right = 0
if i+mxfl<len(seq) and i+mnfl<len(seq):
left = i + mnfl
right = i + mxfl + 1
elif i+mxfl>=len(seq) and i+mnfl<len(seq):
left = i + mnfl
right = len(seq) + 1
else:
continue
if(num != 0): #说明已经匹配到输入字符串最右端
break;
#print(left,right)
for j in range(left,right):# 只对特征最小长度到最大长度的区间进行搜索
#print(i,j,seq[i:j])
for ftk in fts.keys():
if num==0:# 判定条件1:当前字符串能够匹配特征,多加一个字符就匹配不上,便是最大匹配
# 判定条件2:当前字符串能够匹配特征,且已经到输入字符串最右端,便是最大匹配
if (seq[i:j] in fts[ftk] and j!=len(seq) and seq[i:j+1] not in fts[ftk]) or (seq[i:j] in fts[ftk] and j==len(seq)):
res_seq = res_seq + seq[mid:i] + ' ' + seq[i:j] + '/' + ftk
num = num + 1
mid = j
elif (seq[i:j] in fts[ftk] and j!=len(seq) and seq[i:j+1] not in fts[ftk]) or (seq[i:j] in fts[ftk] and j==len(seq)):
res_seq = res_seq + ',' + ftk
if num != 0 and j!=len(seq):
#print('num',num,'j',j)
res_seq = res_seq + ' '
num = 0
break;
if mid != len(seq)-1:
res_seq = res_seq + seq[mid:]
return res_seq
if __name__ == '__main__':
#feature = sys.stdin.readline().strip()
#sequence = sys.stdin.readline().strip()
feature = "singer_周杰|周杰伦|刘德华|王力宏;song_冰雨|北京欢迎你|七里香;actor_周杰伦|孙俪"
sequence = "请播放周杰伦的七里香给周杰伦周杰孙俪听周杰王力宏"
features = {}
feature = feature.split(';')
for ft in feature:
ft = ft.split('_')
features[ft[0]] = ft[1].split('|')
mxfl, mnfl = max_min_ftv_length(features)
result = max_length_fit(features, sequence, mxfl, mnfl)
print(result)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
转发
查看13道真题和解析
点赞 评论 收藏
转发
牛客热帖
正在热议
# 和牛牛一起刷题打卡 #
9492次浏览 828人参与
# 机械制造薪资爆料 #
348048次浏览 4099人参与
# 牛客帮帮团来啦!有问必答 #
1056062次浏览 16002人参与
# 通信硬件薪资爆料 #
250397次浏览 2361人参与
# 面试中,你被问过哪些奇葩问题? #
19274次浏览 149人参与
# 你收到了团子的OC了吗 #
525140次浏览 6239人参与
# 毕业租房也有小确幸 #
38310次浏览 3161人参与
# 你怎么评价今年的春招? #
9379次浏览 160人参与
# 我想象的工作vs实际工作 #
104166次浏览 1681人参与
# 提前批和秋招有什么区别 #
28870次浏览 695人参与
# 晒一晒我的offer #
3725419次浏览 57535人参与
# 春招你拿到offer了吗 #
397855次浏览 5746人参与
# 秋招开了,你想投哪些公司呢 #
132387次浏览 3423人参与
# 实习生应该准时下班吗 #
88324次浏览 649人参与
# 来选选带哪个offer回家过年 #
191671次浏览 1838人参与
# 你的秋招进行到哪一步了 #
392749次浏览 6640人参与
# 腾讯工作体验 #
151205次浏览 1476人参与
# 浅聊一下我实习的辛苦费 #
99110次浏览 1000人参与
# 百度工作体验 #
28538次浏览 286人参与
# 担心入职之后被发现很菜怎么办 #
37306次浏览 311人参与