1084. Broken Keyboard (20)

时间限制
200 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

On a broken keyboard, some of the keys are worn out. So when you type some sentences, the characters corresponding to those keys will not appear on screen.

Now given a string that you are supposed to type, and the string that you actually type out, please list those keys which are for sure worn out.

Input Specification:

Each input file contains one test case. For each case, the 1st line contains the original string, and the 2nd line contains the typed-out string. Each string contains no more than 80 characters which are either English letters [A-Z] (case insensitive), digital numbers [0-9], or "_" (representing the space). It is guaranteed that both strings are non-empty.

Output Specification:

For each test case, print in one line the keys that are worn out, in the order of being detected. The English letters must be capitalized. Each worn out key must be printed once only. It is guaranteed that there is at least one worn out key.

Sample Input:

7_This_is_a_test
_hs_s_a_es

Sample Output:

7TI

思路
1.set模拟一个字典dic存放键位,队列q按照键位的第一次输入依次存放键,然后根据实际的输入效果确定损坏的键位。
2.当队列不为空时,依次取出队列的首元素,检查是否在字典中已遍历,没遍历表示缺失,直接打印。
10.03:map会自动根据键值排序,所以用队列先记录下键位的输入顺序。。。另外这道题20分ac了19分,一个特殊用例死活过不去,暂且先放着。
11.30:改用set存放值就AC了。
未AC代码
#include<iostream>
#include<map>
#include<queue>
using namespace std;
int main()
{
string s;
string r;
queue<char> q;
map<char,int> dic;
while(cin >> s >> r)
{
for(int i = ;i < s.size();i++)
{
if(s[i] == '_' || dic.count(toupper(s[i])) > )
continue;
else
{
dic.insert(pair<char,int>(toupper(s[i]),));
q.push(toupper(s[i]));
}
} for(int i = ;i < r.size();i++)
{
if(r[i] == '_')
continue;
else
{
dic[toupper(r[i])] = -;
}
} while(!q.empty())
{
if(dic[q.front()] > )
cout << q.front();
q.pop();
}
cout << endl;
}
}

AC代码

#include<iostream>
#include<set>
#include<queue>
using namespace std;
int main()
{
string s;
string r;
queue<char> q;
set<char> dic;
while(cin >> s >> r)
{
for(int i = 0;i < s.size();i++)
{
if(dic.find(toupper(s[i])) == dic.end())
{
dic.insert(toupper(s[i]));
q.push(toupper(s[i]));
}
} for(int i = 0;i < r.size();i++)
{
if(dic.find(toupper(r[i])) != dic.end())
{
dic.erase(toupper(r[i]));
}
} while(!q.empty())
{
if(dic.find(q.front()) != dic.end())
cout << q.front();
q.pop();
}
}
}

  

 

PAT1084:Broken Keyboard的更多相关文章

  1. pat1084. Broken Keyboard (20)

    1084. Broken Keyboard (20) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue On a ...

  2. UVa 11998 Broken Keyboard (数组模拟链表问题)

    题目链接: 传送门 Broken Keyboard #include<bits/stdc++.h> using namespace std; char str[100010]; int m ...

  3. UVa 11988 Broken Keyboard(链表->数组实现)

    /*数组形式描述链表:链表不一定要用指针. 题目链接:UVa 11988 Broken Keyboard 题目大意: 小明没有开屏幕输入一个字符串,电脑键盘出现了问题会不定时的录入 home end ...

  4. 1084. Broken Keyboard (20)

    On a broken keyboard, some of the keys are worn out. So when you type some sentences, the characters ...

  5. B - Broken Keyboard (a.k.a. Beiju Text)

    Problem B Broken Keyboard (a.k.a. Beiju Text) You're typing a long text with a broken keyboard. Well ...

  6. uva - Broken Keyboard (a.k.a. Beiju Text)(链表)

    11988 - Broken Keyboard (a.k.a. Beiju Text) You’re typing a long text with a broken keyboard. Well i ...

  7. PAT 1084 Broken Keyboard

    1084 Broken Keyboard (20 分)   On a broken keyboard, some of the keys are worn out. So when you type ...

  8. A1084. Broken Keyboard

    On a broken keyboard, some of the keys are worn out. So when you type some sentences, the characters ...

  9. B - Broken Keyboard (a.k.a. Beiju Text) 数组模拟链表

    You're typing a long text with a broken keyboard. Well it's not so badly broken. The only problem wi ...

随机推荐

  1. Android+Eclipse修改包路径

    在开发过程中发现之前定的包名或是路径不太合理,怎么修改呢?选中要修改的包,按F2按键,如下图: 图1 上图是我修改后的,修改前的包名是com.example.appcenter,自改为com.exam ...

  2. FPGA学习笔记(一)Verilog语法基础

    一.变量类型 ①数值 数值表示采用 <二进制位数>'<数值表示的进制><数值>的结构. 其中进制可以为b.o.d.h分别代表二.八.十.十六进制. 例如22'd0代 ...

  3. 如何将sqlserver的windows验证模式改为SQL Server 和 Windows 混合身份验证模式

    今天问同事拷贝了份虚拟机,里面已装好sqlserver2008,可是他装的时候选择的是windows身份验证,我需要将其改成SQL Server 和 Windows 混合身份验证模式,具体步骤如下: ...

  4. LeetCode之“动态规划”:Edit Distance

    题目链接 题目要求: Given two words word1 and word2, find the minimum number of steps required to convert wor ...

  5. 不要在#include中使用".."

    按照Google C++风格,不应该在#include中使用点号和双点号. 例如:project/scr/base/logging.h 应该这样包含: #include "base/logg ...

  6. sso系统使用

    一:什么是sso(single sign on) ? sso(单点登录系统)简单说就是客户端第一次访问应用1的时候,由于没有登录,会被引导到登录页面进行登录,如果登录校验通过,将返回一个认证信息tic ...

  7. CRM客户关系管理系统(十二)

    十二章.学员报名流程开发 2  12.1.学员报名合同和证件信息上传 功能: 必须勾选报名合同协议 必须上传个人证件信息 最多只能上传三个文件 文件大小2M以内 列出已上传文件 (1)crm/urls ...

  8. JDBC基本使用

    J2EE技术规范(二)——JDBC 分类: java2012-12-03 14:25 1060人阅读 评论(8) 收藏 举报 一.了解JDBC (1) JDBC是以统一方式访问数据库的API (2) ...

  9. Android框架之Volley与Glide

    PS:在看到这个题目的同时,你们估计会想,Volley与Glide怎么拿来一块说呢,他们虽然不是一个框架,但有着相同功能,那就是图片处理方面.首先我们先来看一下什么volley,又什么是glide. ...

  10. Resin文档阅读笔记

    阅读文档对应的版本为Resin4.0,且基本只关注Standard版本的功能. 1.Resin可以注册为服务: To install the service, use C:/> resin-3. ...