Renshinzen Ответов: 1

Как получить пользовательский ввод для этой java-программы в основной функции?


Вопрос: Учитывая два слова (начало и конец) и словарь, Найдите длину кратчайшей последовательности преобразований от начала до конца, такую, чтобы одновременно можно было изменить только одну букву и каждое промежуточное слово должно существовать в словаре.

Как получить пользовательский ввод здесь, в основной функции?
Может ли кто-нибудь написать код для основной функции? Это будет очень полезно, и спасибо!

ВХОД

мат

шляпа

НДС

крыса

комплект

ВЫХОД

2

Что я уже пробовал:

<pre lang="java">
import java.io.*;
import java.util.*;
public class TestClass{
  public int ladderLength(String beginWord, String endWord, Set<String> wordList) {
	Set<String> beginSet = new HashSet<String>(), endSet = new HashSet<String>();

	int len = 1;
	int strLen = beginWord.length();
	HashSet<String> visited = new HashSet<String>();
	
	beginSet.add(beginWord);
	endSet.add(endWord);
	while (!beginSet.isEmpty() && !endSet.isEmpty()) {
		if (beginSet.size() > endSet.size()) {
			Set<String> set = beginSet;
			beginSet = endSet;
			endSet = set;
		}

		Set<String> temp = new HashSet<String>();
		for (String word : beginSet) {
			char[] chs = word.toCharArray();

			for (int i = 0; i < chs.length; i++) {
				for (char c = 'a'; c <= 'z'; c++) {
					char old = chs[i];
					chs[i] = c;
					String target = String.valueOf(chs);

					if (endSet.contains(target)) {
						return len + 1;
					}

					if (!visited.contains(target) && wordList.contains(target)) {
						temp.add(target);
						visited.add(target);
					}
					chs[i] = old;
				}
			}
		}

		beginSet = temp;
		len++;
	}
	
	return 0;
}
    }

1 Ответов

Рейтинг:
1

OriginalGriff

Цитата:
Может ли кто-нибудь написать код для основной функции?

Нет.
Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.
Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!

Для ввода данных пользователем см. здесь: Как я могу получить пользовательский ввод в Java? - переполнение стека[^]