Тема: Завдання на роботу зі строками
Вітаю.
Щось не можу опанувати одну задачку на роботу зі строками.
Створити програму, яка перевіряє, чи можна сформувати заданий рядок S з двох інших рядків: P1 і P2.
Умова в тому, що символи в P1 і P2 мають бути в тому самому порядку, що й у S.
(Не можу збагнути як раз, як написати перевірку на те, що символи у рядках P1 та P2 стоять у тому самому порядку як у S)
Приклад: 'radency' можна сформувати за допомогою 'rdnc’ та 'aey':
S : r a d e n c y = radency
P1: r d n c = rdnc
P2: a e y = aey
Ще варіанти для перевірки:
S = '8TaWpbgs8oaw68P86QT', P1 = '8TaWpbgs8', P2 = 'oaw68P86QTT'
Expected: False
S = 'iMZUyH I6 V8c8VAi03', P1 = 'iMUH 88i', P2 = 'Zy I6VcVA03'
Expected: True
S = 'radency', P1 = 'rade', P2 = 'ncyy'
Expected: False
S = 'w27y7', P1 = '27', P2 = 'w7y'
Expected: True
S = 'Ky5x3dsjeN5hoMYXSP9', P1 = 'Ky5x3dsje', P2 = 'N5hoYS9MXP'
Expected: False
S = 'A8VDpB6jugQOLifiRfd', P1 = '8D6jAVpBu', P2 = 'gQOLifiRfd'
Expected: False
S = 'radency', P1 = 'rade', P2 = 'nyc'
Expected: False
S = 'Keyzx6wj6Aa03c3AFN8', P1 = 'Ke6wyzxj6', P2 = 'A033F8acAN'
Expected: False
Мій код:
public class StringChecker
{
public static bool Check(string s, string p1, string p2)
{
for (int i = 0; i < s.Length; i++)
{
if (!p1.Contains(s[i]) && !p2.Contains(s[i]))
{
return false;
}
}
int count = 0;
do
{
if (p1.Length != 0 && p1.Contains(s[count]))
{
int index = p1.IndexOf(s[count]);
p1 = p1.Remove(index, 1);
count++;
}
else if (p2.Length != 0 && p2.Contains(s[count]))
{
int index = p2.IndexOf(s[count]);
p2 = p2.Remove(index, 1);
count++;
}
else
{
return false;
}
} while (count < s.Length);
if (p1.Length != 0 || p2.Length != 0)
{
return false;
}
return true;
}
}