私は、それが実行時エラーを与えることを超えて、350までの長さの入力文字列と言う小さな入力に対して機能するこのソリューションを持っています。入力制約は 0 < input<500 です。
この問題はhttps://www.hackerrank.com/contests/quantium/challenges/k-mismatchからのものです
長さ 500 までの文字列を処理するようにこのコードを最適化するにはどうすればよいですか?
言語 c#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Solution {
static int mismatch(string a, string b)
{
int result = 0;
for (int i = 0; i < a.Length; i++)
if (a[i] != b[i])
result++;
return result;
}
static void Main(string[] args)
{
long no = 0;
int K = int.Parse(Console.ReadLine());
string word = Console.ReadLine();
List<string> wordList = new List<string>();
List<string> curr = new List<string>();
var query =
from i in Enumerable.Range(0, word.Length)
from j in Enumerable.Range(0, word.Length - i + 1)
where j >= 1
select word.Substring(i, j);
for (int i = 1; i < word.Length; i++)
{
foreach (string s in query) { if (s.ToString().Length == i)curr.Add(s); }
if (curr.Count() > 1)
for (int j = 0; j < curr.Count(); j++)
for (int k = j + 1; k < curr.Count(); k++)
if (mismatch(curr.ElementAt(j).ToString(), curr.ElementAt(k).ToString()) <= K)
no++;
curr.Clear();
}
Console.WriteLine(word.Length+":"+no);
}
}