Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.CodeDom.Compiler;
- using System.Collections.Generic;
- using System.Collections;
- using System.ComponentModel;
- using System.Diagnostics.CodeAnalysis;
- using System.Globalization;
- using System.IO;
- using System.Linq;
- using System.Reflection;
- using System.Runtime.Serialization;
- using System.Text.RegularExpressions;
- using System.Text;
- using System;
- class Solution {
- public struct Substring
- {
- public string str;
- public int start;
- public int end;
- private string sortedStr;
- public Substring(string s, int start, int end)
- {
- this.str = s;
- this.start = start;
- this.end = end;
- this.sortedStr = String.Concat(s.OrderBy(c => c));
- }
- public override string ToString() => $"{str} [{start}-{end}]";
- public bool IsAnagram(Substring s)
- {
- if (s.start <= this.start)
- return false;
- return this.sortedStr == s.sortedStr;
- }
- }
- static IEnumerable<Substring> substrings(string s)
- {
- return from i in Enumerable.Range(0, s.Length)
- from j in Enumerable.Range(0, s.Length - i + 1)
- where j >= 1
- select new Substring(s.Substring(i, j), i, i+j-1);
- }
- // Complete the sherlockAndAnagrams function below.
- static int sherlockAndAnagrams(string s)
- {
- var pairsCount = 0;
- var query = substrings(s);
- foreach (var e in query)
- {
- foreach (var e2 in query)
- {
- bool isAnagram = e.IsAnagram(e2);
- if (isAnagram)
- pairsCount++;
- }
- }
- return pairsCount;
- }
- static void Main(string[] args) {
- TextWriter textWriter = new StreamWriter(@System.Environment.GetEnvironmentVariable("OUTPUT_PATH"), true);
- int q = Convert.ToInt32(Console.ReadLine());
- for (int qItr = 0; qItr < q; qItr++) {
- string s = Console.ReadLine();
- int result = sherlockAndAnagrams(s);
- textWriter.WriteLine(result);
- }
- textWriter.Flush();
- textWriter.Close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement