Advertisement
Guest User

Untitled

a guest
Apr 5th, 2020
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.23 KB | None | 0 0
  1. using System.CodeDom.Compiler;
  2. using System.Collections.Generic;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Diagnostics.CodeAnalysis;
  6. using System.Globalization;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Reflection;
  10. using System.Runtime.Serialization;
  11. using System.Text.RegularExpressions;
  12. using System.Text;
  13. using System;
  14.  
  15. class Solution {
  16.  
  17.     public struct Substring
  18.     {
  19.         public string str;
  20.         public int start;
  21.         public int end;
  22.  
  23.         private string sortedStr;
  24.  
  25.         public Substring(string s, int start, int end)
  26.         {
  27.             this.str = s;
  28.             this.start = start;
  29.             this.end = end;
  30.             this.sortedStr = String.Concat(s.OrderBy(c => c));
  31.         }
  32.  
  33.         public override string ToString() => $"{str} [{start}-{end}]";
  34.         public bool IsAnagram(Substring s)
  35.         {
  36.             if (s.start <= this.start)
  37.                 return false;
  38.            
  39.             return this.sortedStr == s.sortedStr;
  40.         }
  41.     }
  42.  
  43.     static IEnumerable<Substring> substrings(string s)
  44.     {
  45.         return from i in Enumerable.Range(0, s.Length)
  46.             from j in Enumerable.Range(0, s.Length - i + 1)
  47.             where j >= 1
  48.             select new Substring(s.Substring(i, j), i, i+j-1);
  49.     }
  50.  
  51.     // Complete the sherlockAndAnagrams function below.
  52.     static int sherlockAndAnagrams(string s)
  53.     {
  54.         var pairsCount = 0;
  55.         var query = substrings(s);
  56.         foreach (var e in query)
  57.         {
  58.             foreach (var e2 in query)
  59.             {
  60.                 bool isAnagram = e.IsAnagram(e2);
  61.                 if (isAnagram)
  62.                     pairsCount++;
  63.             }
  64.         }
  65.        
  66.         return pairsCount;
  67.     }
  68.  
  69.     static void Main(string[] args) {
  70.         TextWriter textWriter = new StreamWriter(@System.Environment.GetEnvironmentVariable("OUTPUT_PATH"), true);
  71.  
  72.         int q = Convert.ToInt32(Console.ReadLine());
  73.  
  74.         for (int qItr = 0; qItr < q; qItr++) {
  75.             string s = Console.ReadLine();
  76.  
  77.             int result = sherlockAndAnagrams(s);
  78.  
  79.             textWriter.WriteLine(result);
  80.         }
  81.  
  82.         textWriter.Flush();
  83.         textWriter.Close();
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement