Как увеличить скорость работы программы? - 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();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5
Похожие ответы