Chinaunix首页 | 论坛 | 博客
  • 博客访问: 552907
  • 博文数量: 38
  • 博客积分: 10093
  • 博客等级: 上将
  • 技术积分: 1460
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-24 13:04
文章分类

全部博文(38)

文章存档

2012年(1)

2010年(9)

2009年(3)

2008年(25)

我的朋友

分类: LINUX

2010-11-10 20:27:38

题目要求是:

对已经用空格划分好的文本按照一个单词,两个单词,三个单词的形式输出,比如“自然 语言 处理 是 计算机 科学 领域 与 人工 智能 领域 中 的 一个    重要 方向。”   输出结果是“

自然
自然语言
自然语言处理
语言
语言处理
语言处理是
处理
处理是
处理是计算机
`……



Perl 程序代码:


#!/usr/bin/perl

use strict;
use warnings;


$_ = '自然 语言 处理 是 计算机 科学 领域 与 人工 智能 领域 中 的 一个 重要 方向。';

s/[、。]//g;

my @word = split;
my %sum;

while ($#word > 2)

{
    my $str1 = $word[0];
    my $str2 = $word[0].$word[1];
    my $str3 = $word[0].$word[1].$word[2];
    print "$str1\n$str2\n$str3\n";
    $sum{$str1}++;
    $sum{$str2}++;
    $sum{$str3}++;
    shift @word;
}
if ($#word == 2)

{
    my $str1 = $word[0];
    my $str2 = $word[0].$word[1];
    print "$str1\n$str2\n";
    $sum{$str1}++;
    $sum{$str2}++;
    shift @word;
}
else
{
    print "$word[0]\n";
    $sum{$word[0]}++;
    shift @word;
}

my @ks = keys %sum;

foreach (@ks)
{
    print "$_\t\t\t$sum{$_}\n";
}



对于有更好写法的朋友,欢迎指正啦。 呵呵。


阅读(1293) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~