Matlab编程练习2(字符串)

问题

(问题都是来源某牛的题,用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()等要牢记。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值