关注
我的方法也很暴力。。。 # 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)
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
3057次浏览 42人参与
# 找工作的破防时刻 #
251184次浏览 1947人参与
# 程序员找工作至少要刷多少题? #
6410次浏览 106人参与
# OPPO求职进展汇总 #
770550次浏览 5395人参与
# 论秋招对个人心气的改变 #
4495次浏览 78人参与
# 程序员能干到多少岁? #
4716次浏览 72人参与
# 为了减少AI幻觉,你注入过哪些设定? #
1313次浏览 41人参与
# 刚入职的你踩过哪些坑 #
3064次浏览 67人参与
# 一张图晒一下你的AI员工 #
2170次浏览 51人参与
# 牛客AI体验站 #
2364次浏览 70人参与
# AI Coding的使用心得 #
1836次浏览 45人参与
# 我现在比当时_,你想录用我吗 #
2981次浏览 46人参与
# 关于春招/暑期实习,你想知道哪些信息? #
3092次浏览 69人参与
# 晒晒你司的新年福利 #
2984次浏览 54人参与
# 实习,不懂就问 #
163966次浏览 1459人参与
# 软开人,秋招你打算投哪些公司呢 #
180276次浏览 1385人参与
# 帆软软件工作体验 #
12621次浏览 68人参与
# 牛客租房专区 #
146515次浏览 1462人参与
# 从哪些方向判断这个offer值不值得去? #
51066次浏览 348人参与
# 简历无回复,你会继续海投还是优化再投? #
138793次浏览 875人参与
顺丰集团工作强度 434人发布