Вот сценарий: данное слово удаляет один символ из слова на каждом шаге так, чтобы сокращенное слово по-прежнему оставалось словом в словаре. Продолжайте, пока не останется ни одного символа.
Вот подвох: Вам нужно удалить правильный символ, например. в слове может быть два возможных символа, которые можно удалить, и оба могут привести к тому, что сокращенное слово станет допустимым словом, но на более позднем этапе один может быть сокращен до конца, т. Е. Символов не останется, а другой может зависнуть.
Пример:
ИЛИ
Пожалуйста, посмотрите мой код, я использую рекурсию, но хотел бы знать, есть ли более эффективные решения, чтобы сделать то же самое.
public class isMashable
{
static void initiate(String s)
{
mash("", s);
}
static void mash(String prefix, String s)
{
int N = s.length();
String subs = "";
if (!((s.trim()).equals("")))
System.out.println(s);
for (int i = 0 ; i < N ; i++)
{
subs = s.substring(0, i) + s.substring(i+1, N);
if (subs.equals("abc")||subs.equals("bc")||subs.equals("c")||subs.equals("a")) // check in dictionary here
mash("" + s.charAt(i), subs);
}
}
public static void main(String[] args)
{
String s = "abc";
initiate(s);
}
}