Advertisement
Guest User

solution

a guest
Jan 23rd, 2020
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int isAnagram(string a, string b){
  6. int x[26] = {};
  7. int y[26] = {};
  8. for (int i=0; i<a.length(); i++){
  9. x[a[i]-97]++;
  10. }
  11. for (int i=0; i<b.length(); i++){
  12. y[b[i]-97]++;
  13. }
  14. for (int i=0; i<26; i++){
  15. if (x[i] != y[i]) return 0;
  16. }
  17. return 1;
  18. }
  19.  
  20. // Complete the sherlockAndAnagrams function below.
  21. int sherlockAndAnagrams(string s) {
  22. int n = s.length();
  23. vector<string> all;
  24. for (int len = 1; len <= n; len++) {
  25. for (int i = 0; i <= n - len; i++) {
  26. int j = i + len - 1;
  27. string v = "";
  28. for (int k = i; k <= j; k++){
  29. v += s[k];
  30. }
  31. all.push_back(v);
  32. }
  33. }
  34.  
  35. int answer = 0;
  36. for (int i=0; i<all.size(); i++){
  37. for (int j=0; j<all.size(); j++){
  38. if (i!= j && all[i].length() == all[j].length()){
  39. int a = isAnagram(all[i], all[j]);
  40. answer+= a;
  41. }
  42. }
  43. }
  44. return answer/2;
  45. }
  46.  
  47. int main()
  48. {
  49. ofstream fout(getenv("OUTPUT_PATH"));
  50.  
  51. int q;
  52. cin >> q;
  53. cin.ignore(numeric_limits<streamsize>::max(), '\n');
  54.  
  55. for (int q_itr = 0; q_itr < q; q_itr++) {
  56. string s;
  57. getline(cin, s);
  58.  
  59. int result = sherlockAndAnagrams(s);
  60.  
  61. fout << result << "\n";
  62. }
  63.  
  64. fout.close();
  65.  
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement