1 条题解
-
0
#include <bits/stdc++.h> using namespace std; const int N = 1e6 + 10; char c[20], s[N]; int main() { cin.getline(c, sizeof(c)); cin.getline(s, sizeof(s)); int clen = strlen(c); int slen = strlen(s); for (int i = 0; i < clen; i++) if (c[i] >= 'A' && c[i] <= 'Z') c[i] = c[i] - 'A' + 'a'; for (int i = 0; i < slen; i++) if (s[i] >= 'A' && s[i] <= 'Z') s[i] = s[i] - 'A' + 'a'; int sum = 0, p = -1; for (int i = 0, k = 0; i <= slen - clen; i++) // 搜索第一个字母,如果第slen-clen+1或以上的字母匹配也没用,后面也不够装 if (s[i] == c[0] && (i == 0 || s[i - 1] == ' ')) // 是否与第一个字母匹配,前一位是不是空格,但还可能是第一位 { for (int j = 1; j < clen; j++) // 逐一匹配 if (s[i + j] != c[j]) { k = 1; // 并不匹配 break; } if (k == 0 && (i + clen == slen || s[i + clen] == ' ')) { sum++; if (p == -1) p = i; // 记录第一个 } k = 0; // 归零,这个很重要!!! } if (p == -1) printf("-1\n"); else printf("%d %d\n", sum, p); return 0; }
- 1
信息
- ID
- 664
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 5
- 标签
- 递交数
- 91
- 已通过
- 36
- 上传者