其他分享
首页 > 其他分享> > 题目29

题目29

作者:互联网

         主管期望你来实现英文输入法单词联想功能
         需求如下
         依据用户输入的单词前缀
         从已输入的英文语句中联想出用户想输入的单词
         按字典序输出联想到的单词序列
         如果联想不到
         请输出用户输入的单词前缀
         注意
         英文单词联想时区分大小写
         缩略形式如
         "don't" 判定为两个单词 "don"和 "t"
         输出的单词序列不能有重复单词
         且只能是英文单词,不能有标点符号

         输入描述
         输入两行
         首行输入一段由英文单词word和标点构成的语句str

         接下来一行为一个英文单词前缀pre
         0 < word.length() <= 20
         0 < str.length <= 10000
         0 < pre <=20

         输出描述
         输出符合要求的单词序列或单词前缀
         存在多个时,单词之间以单个空格分割

         示例一
         输入
           I love you
           He

          输出
            He

          说明
            用户已输入单词语句"I love you",
            中提炼出"I","love","you"三个单词
            接下来用户输入"He" ,
            从已经输入信息中无法联想到符合要求的单词
            所以输出用户输入的单词前缀

            示例二
            输入
            The furthest distance in the world,Is not between life and death,But when I stand in front or you,Yet you don't know that I love you.
            f

            输出
            front furthest

<?php
$s=fgets(STDIN);
// $arr=explode(' ',trim(fgets(STDIN)));
$pre=trim(fgets(STDIN));
solution($s,$pre);

function solution($s,$pre)
{
    $arr=preg_split('/\W+/',$s);
    $arr=array_flip(array_flip($arr));//去重
    $res='';
    foreach ($arr as $value){
        if(startwith($value,$pre)){
            $res.=$value.' ';
        }
    }
    if(strlen($res)==0) $res=$pre;
    echo $res;
}

function startwith($str,$pattern) {
    return strpos($str,$pattern) === 0 ? true:false;
}

 

标签:题目,前缀,29,联想,单词,英文单词,word,输入
来源: https://www.cnblogs.com/weiguomiao/p/16493555.html