首页 > 试题广场 >

脸滚键盘

[编程题]脸滚键盘
  • 热度指数:4676 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

av394281 中,充满威严的蕾米莉亚大小姐因为触犯某条禁忌,被隙间妖怪八云紫(紫m……èi)按住头在键盘上滚动。
同样在弹幕里乱刷梗被紫姐姐做成罪袋的你被指派找到大小姐脸滚键盘打出的一行字中的第 `k` 个仅出现一次的字。
(
为简化问题,大小姐没有滚出 ascii 字符集以外的字)


输入描述:
每个输入都有若干行,每行的第一个数字为`k`,表示求第`k`个仅出现一次的字。然后间隔一个半角空格,之后直到行尾的所有字符表示大小姐滚出的字符串`S`。


输出描述:
输出的每一行对应输入的每一行的答案,如果无解,输出字符串`Myon~`

(请不要输出多余的空行)

为了方便评测,如果答案存在且为c,请输出[c]
示例1

输入

2 misakamikotodaisuki
3 !bakabaka~ bakabaka~ 1~2~9!
3 3.1415926535897932384626433832795028841971693993751o582097494459211451488946419191919l91919hmmhmmahhhhhhhhhh
7 www.bilibili.com/av170001
1 111

输出

[d]
[9]
[l]
[7]
Myon~

备注:
字符串S仅包含可见ascii码,长度不超过100000
while(line = readline()){
    
    var e = 0;
    for(i=0;i<line.length;i++){
        if(line[i]==" "){
            e = i;
            break;
        }
    }
    if(e==1){
        var k = parseInt(line[0]);
    }else{
        var k = parseInt(line[0])*10+parseInt(line[1]);;
    }
    var t = [];
    for(i=e+1;i<line.length;i++){
        t.push(line[i]);
    }
    var temp = [];
    var count= [] ;
    for(i=0;i<t.length;i++){
        if(temp.indexOf(t[i])==-1){
            var l =0;
            temp.push(t[i]);
            count.push(l++);
        }else{
            var index = temp.indexOf(t[i]);
            count[index]++;
        }
    }
    var w = [];
  
    for(i=0;i<count.length;i++){
        count[i]+1;
        if(count[i]==0){
            w.push(temp[i]);
        }
 
      }
    var pp = 'Myon~';
    if(w.length>=k){
           console.log('['+w[k-1]+']');
    }else{
              console.log(pp);
        }
}

编辑于 2019-09-02 15:39:49 回复(0)
思路
①定义list数组,用来记录字符串中每个字母的出现次数,初始化为0
遍历整个字符串,用记录字符串中每个字符的出现次数
③遍历数组,找到正确答案


while(lines=readline())
{
    //var lines="2 misakamikotodaisuki";
    var index=lines.indexOf(" ");
    var k=parseInt(lines.slice(0,index));
    var s=lines.slice(index+1,lines.length);
    //console.log(s);
    abc(k,s);
}
function abc(k,s)
{
   //定义list数组,并初始化为0
    var list=new Array();
    for(var i=0;i<s.length;i++)
    {
        list[s[i]]=0;
    }
   //遍历整个字符串,用记录字符串中每个字符的出现次数
    for(var i=0;i<s.length;i++)
    {
        list[s[i]]++;
    }
    var num=0;//判断只出现一次的字母的个数
    var flag=0;//判断是否有符合要求的字母,默认没有
    for(var i=0;i<s.length;i++)
    {
        if(list[s[i]]==1)
        {
            num++;
        }
        if(num==k)
        {
            console.log("["+s[i]+"]");
            flag=1;
            break;
        }
    }
    if(flag==0)
    {
        console.log("Myon~");
    }
}
发表于 2019-08-19 23:08:13 回复(0)

热门推荐

通过挑战的用户

查看代码