Рекурсивно перетасовать две строки, чтобы создать другую строку

#java #string #recursion #static #boolean

#java #строка #рекурсия #статический #логическое

Вопрос:

Я пытаюсь создать метод shuffle (String stri, String str2, String str3) , который возвращает логическое значение и берет две строки и «перетасовывает» их, чтобы получить третью строку, но я пытаюсь сделать это рекурсивно, о чем мне довольно сложно подумать. Я хочу вернуть true, если str1 и str2 могут быть перетасованы, и вернуть false, если они не могут быть перетасованы.

Например, если str1 = "tv" и str2 = "aol" , метод может возвращать taovl .

Я также планирую протестировать метод, а также создать другой вспомогательный метод, чтобы сделать его более эффективным, но это просто.

Комментарии:

1. Что вы пробовали? С чем конкретно вам нужна помощь?

2. Как вы определяете, может ли String быть «перетасован»?

3. Мне нужна помощь в поиске базовых вариантов, но также нужна помощь с вызовом рекурсивного метода.

4. Передача третьей строки вашему методу не сработает. Вам нужен ваш метод для ВОЗВРАТА сгенерированной строки.

5. Похоже, что это сделает простой одиночный цикл. Я не могу представить, насколько рекурсия была бы вообще желательна.

Ответ №1:

 import java.util.Scanner;
public class lab3{
public static void main(String[] args) {
    String str;
    System.out.print("Enter String: ");
    Scanner sc = new Scanner(System.in);
    str = sc.nextLine();
    String res = revRec3(str);
    System.out.println(res);
}

public static String revRec3(String str)
{
    if (str.length() <= 1)
       return str;
   else{
       String first = str.substring(0, str.length() / 3);
       String second = str.substring(str.length() / 3, ((2 * str.length()) / 3));
       String third = str.substring((2 * str.length()) / 3, str.length());

       return revRec3(third) revRec3(second) revRec3(first);
   }
}
}
  

попробуйте сделать что-то вроде этого. Эта программа разбивает строку на 3 части, а затем переворачивает их с помощью рекурсии.

Ответ №2:

Я решил это, просто создав три целочисленные переменные для просмотра индексов всех трех строк и проверки, соответствует ли буква a в любом индексе тому же порядку s3