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