关注
我的方法也很暴力。。。 # 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)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
查看9道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你的实习产出是真实的还是包装的? #
34733次浏览 433人参与
# 牛友的志愿填报指南 #
62953次浏览 484人参与
# 厦门银行科技岗值不值得投 #
15613次浏览 359人参与
# 你的实习什么时候入职 #
366562次浏览 2355人参与
# 学历VS实习,哪个更重要? #
1584次浏览 46人参与
# 工作上你捅过哪些篓子? #
68283次浏览 315人参与
# uu们,春招你还来吗? #
62754次浏览 734人参与
# 面试紧张时你会有什么表现? #
33916次浏览 205人参与
# 面试中,你被问过哪些奇葩问题? #
96001次浏览 1259人参与
# 面试被问到不会的问题,你怎么应对? #
25420次浏览 645人参与
# 你都用vibe coding做过什么? #
21434次浏览 810人参与
# 机械人,签完三方你在忙什么? #
83887次浏览 266人参与
# 你觉得大几开始实习最合适? #
29661次浏览 308人参与
# AI Coding实战技巧 #
15163次浏览 299人参与
# 你见过哪些招聘隐形歧视? #
24364次浏览 214人参与
# 国庆前的秋招小结 #
291162次浏览 1742人参与
# 哔哩哔哩笔试 #
35067次浏览 142人参与
# 如果人生可以debug你会改哪一行? #
12736次浏览 167人参与
# 秋招特别不鸣谢 #
93185次浏览 685人参与
# 应届生被毁约被毁意向了怎么办 #
65295次浏览 313人参与
# 海康威视求职进展 #
132264次浏览 551人参与
