题目背景
小明的键盘使用年限长,输入时键盘的按键时不时会有粘滞。出现粘滞情况时,上一个被按下的按键会被长按,而字符可能被输入一次或多次。
题目描述
给出小明将要输入的字符串s,和小明实际输入的字符串t,请你判断小明实际输入的字符串t是否对应s,即使出现键盘粘滞情况。
输入格式
第一行输入字符串s,第二行输入字符串t。
输出格式
如果t对应s(t中某些字符被长按)输出yes,否则输出no。
说明/提示
对于样例1,l和i被长按。
对于样例2,b被少按了一次。
对于样例3,t没有被长按
s.length <= 1000
t.length <= 1000
s 和 t 的字符都是小写字母。
解题思路:
不难想到,因为小明是想要输对数的,只是键盘不太给力,所以他不会随便输其他字母,所以其实这题,可以简单的发现,小明输入的某个字母如果少于实际要输的字母,就一定是不符题意的,故统计字母出现次数,对比一下就行了。
代码如下:
#include <iostream>
#include <cstring>
using namespace std;
string a, b;
const int N = 1010;
int cnt1[N], cnt2[N];int main() {cin >> a >> b;for (int i = 0; i < a.length(); i++) {cnt1[a[i] - 'a' + 1]++;}for (int i = 0; i < b.length(); i++) {cnt2[b[i] - 'a' + 1]++;}for (int i = 1; i <= 26; i++) {if (cnt1[i] > cnt2[i]) {cout << "no" << endl;return 0;}}cout << "yes" << endl;return 0;
}