Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int isAnagram(string a, string b){
- int x[26] = {};
- int y[26] = {};
- for (int i=0; i<a.length(); i++){
- x[a[i]-97]++;
- }
- for (int i=0; i<b.length(); i++){
- y[b[i]-97]++;
- }
- for (int i=0; i<26; i++){
- if (x[i] != y[i]) return 0;
- }
- return 1;
- }
- // Complete the sherlockAndAnagrams function below.
- int sherlockAndAnagrams(string s) {
- int n = s.length();
- vector<string> all;
- for (int len = 1; len <= n; len++) {
- for (int i = 0; i <= n - len; i++) {
- int j = i + len - 1;
- string v = "";
- for (int k = i; k <= j; k++){
- v += s[k];
- }
- all.push_back(v);
- }
- }
- int answer = 0;
- for (int i=0; i<all.size(); i++){
- for (int j=0; j<all.size(); j++){
- if (i!= j && all[i].length() == all[j].length()){
- int a = isAnagram(all[i], all[j]);
- answer+= a;
- }
- }
- }
- return answer/2;
- }
- int main()
- {
- ofstream fout(getenv("OUTPUT_PATH"));
- int q;
- cin >> q;
- cin.ignore(numeric_limits<streamsize>::max(), '\n');
- for (int q_itr = 0; q_itr < q; q_itr++) {
- string s;
- getline(cin, s);
- int result = sherlockAndAnagrams(s);
- fout << result << "\n";
- }
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement