问题
(问题都是来源某牛的题,用matlab编程实现)
小易今天读了一篇英语文章,他现在想从里面找出一个单词作为这篇文章的关键词,一个单词可以作为关键词当且仅当它在这篇文章中出现的频率不低于 1% ,现在他想知道有多少个不同的单词可以作为关键词。
一个单词出现的频率=(这个单词出现的次数/这篇文章中的单词总数)*100%
输入例子
I
I
am
a
boy
输出例子
4 (4个单词 ‘I’ ‘am’ ‘a’ ‘boy’都符合要求 )
解题思路
字符串处理问题,因为输入序列为字符串即大小不定长,考虑用元组接收输入。提取独立单词可以巧用unique(), unique()除了可以提取数组中的独立数字外,也可以提取独立字符串,单词比较用strcmp()。
Matlab代码实现
w={'I','I','am','a','boy'}; %用元组存储不等长结构
uw=unique(w); %提取不重复单词
keyNum=0; %keyNum记录关键词数量
for i=1:size(uw,2) %对于每个不重复单词,统计其在文章中出现的次数
word=uw{i}; %当前单词
count=0;
for j=1:size(w,2)
if strcmp(word,w{j})==1 %单词相同
count=count+1;
end
end
if count/size(w,2)>0.01
% disp(word); %显示关键词
keyNum=keyNum+1;
end
end
disp(keyNum);
总结
对于一些常用的字符串处理函数如字符串比较strcmp(),查找子串findstr()等要牢记。
版权声明:本文为qq_40166660原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。