旧键盘 (20) (c++/python)
来源:互联网 发布:苹果最新软件 编辑:程序博客网 时间:2024/05/18 03:41
思路(对应解法二):
对输入1进行hash,由于所有的正确按键都应该响应,仅仅只有坏的按键不响应,那么对照hash判断输入2,对存在的字符进行标记;
那么遍历输入2一遍以后,没有被标记的字符就是有问题的坏键盘按键,顺序输出即可。
解法一: (思路比较自然简单的解法)
#include <iostream>#include <cstring> using namespace std;int main(){ char str1[85], str2[85]; int ascii[200]; cin >> str1 >> str2; memset(ascii, 0, sizeof(ascii)); int length = (int)strlen(str1); int cnt = 0; for (int i = 0; i < length; ++i) { if (str2[cnt] != str1[i]) { char ch = str1[i]; // 转为大写 ch = toupper(ch); // 避免重复 if (ascii[ch] == 0) { ++ascii[ch]; cout << ch; } } else{ ++cnt; } } return 0;}
解法二:(利用hash的概念)
数组用了布尔值,就不用memset函数了
#include<iostream>#include<string>using namespace std;int main(){ string s1, s2; cin >> s1 >> s2; bool hash[256] = { false };//hash数组 int len_1 = s1.length(), len_2 = s2.length(); //s2中出现的键都是好的,标记为true for (int i = 0; i<len_2; ++i) { s2[i] = toupper(s2[i]);//转成大写 hash[s2[i]] = true; } //s1中出现的键如果未标记为true,则是坏键。 for (int i = 0; i<len_1; ++i) { s1[i] = toupper(s1[i]); if (hash[s1[i]] == false) cout << s1[i]; hash[s1[i]] = true;//输出坏键后标记为true,否则会重复输出。 } system("pause"); return 0;}
解法三:
这题目python只要两三行代码:
a,b=raw_input(),raw_input()c=[i.upper() for i in a if i not in b]print "".join( sorted( list(set(c)),key=c.index ) )
0 0
- 旧键盘 (20) (c++/python)
- 1029. 旧键盘(20)--Python
- 1029. 旧键盘(20) python篇
- 1033. 旧键盘打字(20) python 篇
- 1033. 旧键盘打字(20)--Python
- C++PAT旧键盘
- 1029. 旧键盘(20)
- 1029. 旧键盘(20)
- 1029. 旧键盘(20)
- 1029. 旧键盘(20)
- 1029. 旧键盘(20)
- 1029. 旧键盘(20)
- 1029. 旧键盘(20)
- PAT1029旧键盘(20)
- 1029. 旧键盘(20)
- 1029. 旧键盘(20)
- 1029. 旧键盘(20)
- 1029. 旧键盘(20)
- C++中如何重载<<
- 杭电1874-畅通工程续(SPFA算法)
- 产品学习梳理1-产品功能规划
- flask框架:Python 3.5下使用 flask_SqlAlchemy和mysql
- 关于IO流的那些事
- 旧键盘 (20) (c++/python)
- driver: Linux设备模型之input子系统详解
- 一个随时间不断变化的值确认其变化范围的方法
- 未能守到云开见日
- C++ Primer Plus第六版编程练习答案3.7
- Python爬虫
- PPT1
- Python入门
- visio二次开发——拓扑遍历时元件ID识别有误?