#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