Как мне дописать алгоритм, чтобы все работало?

Вам дана строка s, написанная на бумажной полоске, а также строки t1 и t2, состоящие из маленьких букв латинского алфавита. Вы хотите выделить некоторые буквы строки s красным цветом, а остальные синим цветом таким образом, чтобы поставленные рядом красные куски давали строку t1, а синие — t2 (куски в новых строках должны находиться в том же порядке, что и в исходной строке s). От вас требуется вывести количество стыков кусков разного цвета в корректной раскраске исходной строки s. Если существует несколько таких раскрасок, то выведите минимально возможный ответ.

Формат входных данных На вход подаются 3 строки s, t1, t2 (1≤∣t1∣,∣t2∣≤1000, где ∣ti∣ — длина строки ti)).

Формат выходных данных Программа должна выводить на экран одно число — минимально возможное количество пар соседних символов разного цвета в корректной раскраске строки s.

Замечание 1 В первом примере предлагается разделение «stopgame» → StopgAMe (разные цвета обозначены разными регистрами). Можно видеть, что тут есть три пары соседних символов разного цвета.

Замечание 2 Гарантируется, что существует хотя бы одно корректное разбиение строки s на строки t1 и t2.

Пример

Ввод: stopgame sam topge

Вывод: 3

В массив indexes закидываю сопоставимые индексы 1 строки, нужно по сути сделать такую же проверку для 2 строки, но а как отловить стыковки - не знаю...

char[] s = Console.ReadLine().ToCharArray();
            string t1 = Console.ReadLine();
            string t2 = Console.ReadLine();
            string[] indexes = new string[s.Length];

            bool check = true;

            if (t1.Length < 1 || t1.Length > 1000 || t2.Length < 1 || t2.Length > 1000) check = false;  //  ограничения

            if (check)
            {
                for(var i = 0; i < t1.Length; i++)
                {
                    if(s.Contains(t1[i]))
                    {
                        for(var j = 0; j < s.Length; j++)
                        {
                            //если символ t1 есть в s, то его индекс закидывать в indexes[]
                            if (s[j] == t1[i]) 
                            {
                                indexes[j] = j.ToString();
                            }
                        }
                    }                            
                }

                //по индексам toUpper
                for (var i = 0; i < indexes.Length; i++)  //  просто для себя делал, чтобы проверить
                {
                    if (indexes[i] != null) 
                    {
                        s[i] = Convert.ToChar(s[int.Parse(indexes[i])].ToString().ToUpper());
                    }
                }

Ответы (0 шт):