Как увеличить скорость работы программы? - 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д