hihoCoder#1082 然而沼跃鱼早就看穿了一切

时间:2023-03-09 22:33:49
hihoCoder#1082 然而沼跃鱼早就看穿了一切

原题地址

字符串匹配+替换

注意替换串和原串长度是不等的,所以替换完还要进行收缩

可以顺带练习一下KMP

代码:

 #include <iostream>
#include <cstring> using namespace std; void kmp(char *line, int len) {
char p[] = "marshtomp";
char t[] = "fjxmlhx";
int next[] = {-, , , , , , , , , };
int i = ;
int j = ; while (i < len && j < ) {
if (j < || tolower(line[i]) == p[j]) {
i++;
j++;
}
else
j = next[j];
if (j == ) {
memcpy(line + i - , t, );
line[i - + ] = ;
line[i - + ] = ;
j = ;
}
}
} void shrimp(char *line, int len) {
int i = ;
int j = ; while (j < len) {
if (line[j] == )
j++;
else
line[i++] = line[j++];
}
line[i] = ;
} int main() {
char line[]; while (gets(line)) {
int len = strlen(line);
kmp(line, len);
shrimp(line, len);
cout << line << endl;
} return ;
}