Алгоритм удаления символа из слово такое, что сокращенное слово по-прежнему является словом в словаре

Вот сценарий: данное слово удаляет один символ из слова на каждом шаге так, чтобы сокращенное слово по-прежнему оставалось словом в словаре. Продолжайте, пока не останется ни одного символа.

Вот подвох: Вам нужно удалить правильный символ, например. в слове может быть два возможных символа, которые можно удалить, и оба могут привести к тому, что сокращенное слово станет допустимым словом, но на более позднем этапе один может быть сокращен до конца, т. Е. Символов не останется, а другой может зависнуть.

Пример:

  • планета
  • растение
  • штаны
  • кастрюля
  • ан
  • а

ИЛИ

  • планета
  • самолет
  • полоса
  • невозможно далее предположим, что lan — это не слово. надеюсь, вы поняли идею.

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

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);
  }
}
9
задан Blorgbeard 28 June 2012 в 05:13
поделиться