19949: 提取实体
strings, http://cs101.openjudge.cn/practice/19949/
一个句子里面一些特殊的单词被称作实体,实体是存在于现实世界中并且可以与其他物体区分开来的物体,如“John has an apple .”这句话中,“John”和“apple”都是实体。
现在我们有很多个人工标注好实体的英文文档,每篇文档有很多个句子,每个句子中,每个实体的每单词都添加了“###”前缀,并且添加了“###”后缀,表明两个“###”之间的部分是实体或者是实体的一部分。例如:
1)两个“###”之间是实体:
“###John### has an ###apple### ”中有两个实体,是John和apple 2)两个“###”之间是实体的一部分,即是,连续的几个被“###”前后包裹的单词被认为是同一个实体:
“###Shelley### ###Berkley### , a Democratic representative”中有一个实体,是Shelley Berkley
“###Dominic### ###J.### ###Baranello### , an enduring power in Democratic Party”中有一个实体,是Dominic J. Baranello
请你帮助统计每篇文档里有多少个实体,暂时不考虑句子间的实体有重复的情况。
输入
第一行为1个整数N,代表文档里的句子数目。 接下来N行,每行代表一个英文句子,每个句子有多少单词是未知的,词与词之间用空格分隔。
输出
1个整数,代表该篇文档里的实体数目。
样例输入
Sample1 Input:
1
###John### has an ###apple### .
Sample1 Output:
2
解释: 文档中只有一个句子,该句子中有两个实体“John”和“apple”,所以输出是2 。样例输出
Sample2 Input:
1
###Shelley### ###Berkley### , a Democratic representative of Nevada Mrs. ###Babbitt### 's daughter lives in ###Las### ###Vegas### testified about the case in July at a Congressional hearing into the recovery of art stolen during World War II .
Sample2 Output:
3
解释: 文档中仍然只有一个句子,但是现在有三个实体,“Shelley Berkley”,“Babitt”和“Las Vegas”提示
2020/11/14增加说明:注意输出不是每行的实体数,是整篇文档的实体数。
来源:cs101 2019 Final Exam
python
T = int(input())
ans = 0
while T>0:
T -= 1
ans += (input().replace('### ###', '')).count('###') // 2
print(ans)python
n = int(input())
cnt = 0
for _ in range(n):
s = input()
s = s.replace(r"### ###"," ")
#print(s)
while True:
begin = s.find("###")
if begin == -1: break
end = s.find("###", begin+3)
cnt += 1
s = s[end+3:]
print(cnt)