Рекурсивная функция для сопоставления строки с шаблоном подстановки

Так что я пытался решить это задание целый день, просто не могу его получить.

Следующая функция принимает 2 строки, вторая (не первая), возможно, содержащая*х (звездочки).
* является заменой строки (пустой, 1 символ или более), она может появиться (только в s2) один раз, дважды, больше или не отображаться вообще, она не может быть смежной с другой* (ab**c), проверять это не нужно.

public static boolean samePattern(String s1, String s2)

Возвращает true, если строки имеют одинаковый шаблон.
Это должно бытьрекурсивный, не используйте циклы, статические и глобальные переменные. Может использовать локальные переменные и перегрузку метода.

Можно использовать только эти методы:charAt(i), substring(i), substring(i, j), length().

Примеры:

1:TheExamIsEasy; 2:The*xamIs*y → правда
1:TheExamIsEasy; 2:Th*mIsEasy* → правда
1:TheExamIsEasy; 2:* → правда
1:TheExamIsEasy; 2:TheExamIsEasy → правда
1:TheExamIsEasy; 2:The*IsHard → ЛОЖЬ

Я попытался сравнить символы один за другим, используяcharAt до тех пор, пока не встретится звездочка, проверьте, является ли звездочка пустой, сравнивая последовательный символ (i+1) с символомs1 в положенииi, если это правда - продолжить рекурсию сi+1 как счетчикs2 & i как счетчикs1;
если false - продолжить рекурсию сi+1 в качестве счетчиков для обоих.
Продолжайте, пока не будет найдена другая звездочка или конец строки.

Я не знаю, мой мозг теряет след, не может сосредоточиться, любойуказатели / подсказки? Я в правильном направлении?

Кроме того, было сказано, чтовозвраты техника должна быть использована для решения этой проблемы.

Мой код до сих пор (не делает работу, даже теоретически):

public static boolean samePattern(String s1, String s2) {
    if (s1.equals(s2) || s2 == "*") {
        return true;
    }
    return samePattern(s1, s2, 1);
}
public static boolean samePattern(String s1, String s2, int i)
{
    if (s1.equals(s2))
        return true;
    if (i == s2.length() - 1) // No *'s found -- not same pattern.
        return false;

    if (s1.substring(0, i).equals(s2.substring(0, i)))
        samePattern(s1, s2, i+1);
    else if (s2.charAt(i-1) == '*')
        samePattern(s1.substring(0, i-1), s2.substring(0, i), 1); // new smaller strings.
    else
        samePattern(s1.substring(1), s2, i);
}

Ответы на вопрос(4)

Ваш ответ на вопрос