二、阅读程序-1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include <iostream> #include <string> #include <vector> using namespace std; int f(const string &s, const string &t) { int n = s.length(), m = t.length(); vector<int> shift(128, m + 1); int i, j; for (j = 0; j < m; j++) shift[t[j]] = m - j; for (i =0; i<= n - m; i += shift[s[i + m]]){ j =0; while(j < m && s[i +j] == t[j]) j++; if (j == m) return i; } return -1; } int main() { string a ,b; cin >> a >> b; cout << f(a, b) << endl; return 0; } |
假设输入字符串由 ASCII 可见字符组成,完成下面的判断题和单选题:
