Как увеличить скорость работы программы? - C#
Формулировка задачи:
Всем привет! Программа проходит 6/8 тестов (тесты неизвестны), а на последние 2 превышен лимит времени. Прошу помощи.
Задача:
Шантажист пытается составить сообщение, вырезая буквы из газетной статьи. Ему не нужны пробелы и знаки препинания, не важен регистр букв, то есть он может использовать прописные буквы вместо строчных и наоборот.
Ввод содержит в первой строке текст газетной статьи длиной до 100000 символов, состоящий из латинских букв, цифр, пробелов и знаков препинания. Во второй строке содержится сообщение шантажиста длиной до 100000 символов, состоящее только из латинских букв и пробелов.
Вывести YES, если сообщение можно составить, и NO если нельзя.
Пример ввода:
Blame cosmic rays not CO2 for warming up the planet.
bring the ransom
Вывод для примера:
YES
Листинг программы
- using System;
- namespace F2
- {
- class Program
- {
- static string RemoveSpaces(string InString)
- {
- InString = InString.Replace(" ", string.Empty);
- InString = InString.Trim().Replace(" ", string.Empty);
- return InString;
- }
- static void Main(string[] args)
- {
- string Text = Console.ReadLine().ToUpper();
- string Message = Console.ReadLine().ToUpper();
- Message = RemoveSpaces(Message);
- int check = 0;
- for (int i = 0; i < Message.Length; i++)
- {
- for (int j = 0; j < Text.Length; j++)
- {
- if (Convert.ToString(Message[i]) == Convert.ToString(Text[j]))
- {
- check++;
- Text = Text.Remove(j, 1);
- goto Q;
- }
- }
- Q:;
- }
- if (check == Message.Length) Console.WriteLine("YES");
- else Console.WriteLine("NO");
- Console.ReadKey();
- }
- }
- }
Решение задачи: «Как увеличить скорость работы программы?»
textual
Листинг программы
- using System;
- namespace Blackmailer
- {
- class Program
- {
- private static void Main(string[] args)
- {
- string text = "Blame cosmic rays not CO2 for warming up the planet.";
- string message = "bring the ransom";
- //string text = "Abc";
- //string message = "abc";
- char[] alphabet =
- {
- 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
- };
- int[] messageСounts = new int[26];
- int[] textСounts = new int[26];
- for (int i = 0; i < message.Length; i++)
- {
- for (int j = 0; j < alphabet.Length; j++)
- {
- if (char.ToLower(message[i]) == alphabet[j])
- {
- messageСounts[j]++;
- break;
- }
- }
- }
- for (int i = 0; i < text.Length; i++)
- {
- for (int j = 0; j < alphabet.Length; j++)
- {
- if (char.ToLower(text[i]) == alphabet[j])
- {
- textСounts[j]++;
- break;
- }
- }
- }
- bool check = true;
- for (int i = 0; i < textСounts.Length; i++)
- {
- if (messageСounts[i] > textСounts[i])
- {
- check = false;
- break;
- }
- }
- if (check)
- Console.WriteLine("YES");
- else
- Console.WriteLine("NO");
- Console.ReadKey();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д