// UVa 123 - Searching Quickly #include <iostream> #include <string> #include <map> #include <vector> #include <sstream> #include <algorithm> using namespace std; vector<string> title, v; map<string, bool> keyword; string toupper(string s) { for (int i = 0; i < s.length(); i++) s[i] = toupper(s[i]); return s; } string tolower(string s) { for (int i = 0; i < s.length(); i++) s[i] = tolower(s[i]); return s; } int main() { string line; map<string, bool> ignore; while (getline(cin, line) && line != "::") ignore[tolower(line)] = true; int n = 0; while (getline(cin, line) && line.length()) { line = tolower(line); title.push_back(line); istringstream strm(line); string w; while (strm >> w) { if (!ignore[w]) { if (!keyword[w]) { keyword[w] = true; v.push_back(w); } } } n++; } sort(v.begin(), v.end()); for (int i = 0; i < v.size(); i++) { string w = v[i]; string W = toupper(w); for (int j = 0; j < n; j++) { int p = title[j].find(w); while (p < title[j].length()) { string o = title[j]; if ((p == 0 || o[p - 1] == ' ') && (p + w.length() == o.length() || o[p + w.length()] == ' ')) cout << o.replace(p, w.length(), W) << endl; p = title[j].find(w, p + 1); } } } return 0; }
Saturday, June 6, 2015
UVa 123 - Searching Quickly
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment