题解:P17232 [Algo Beat Contest 017 A] 串哈希
cgy20140502 · · 题解
本题有一种十分简单的做法,好像与本题名字哈希无关。
C++ STL 库里的 string 类型支持直接查找子串,直接使用 s.find() 即可,括号里是你要查找的内容,那么我们从约束其它子串条件多的 kirai 开始,查找里面有没有,有就按题意修改
注意:如果 find 没找到会返回 string::npos 的一个东西,它不是字符串,不要混淆,它是 size_t 类型的特殊常量,判断是不是 string::npos 就行了。
#include <bits/stdc++.h>
using namespace std;
int n,s;
string t;
int main(){
cin >> n >> s;
int old = s;//我这里就直接复制一份,然后在 s 上改了,也可以使用其它写法
for (int i = 1;i <= n;i++){
cin >> t;//优先判断忽略规则大的
if (t.find("kirai") != string::npos){//有没有找到
if (s >= 0) s = 0;//kirai 的情况
}else if (t.find("daishuki") != string::npos) s += 2;//daishuki的情况
else if (t.find("shuki") != string::npos) s += 1;//shuki的情况
else s--;//没出现的情况
}
if (s > 0) cout << s-old;//输出
else cout << "shuki";
return 0;//好习惯
}
时间复杂度嘛,反正