递归字符串解析器

时间:2014-05-11 03:34:50

标签: java string parsing recursion substring

我需要创建一个程序,以递归方式将字符串解析为较小的子字符串。每个子字符串都比前一个短一个字母;一旦它结束,它将重新显示该单词,但第一个字母被切掉,然后是它的子串。

例如:给定“Slugger”这个词,程序会显示

  

棒球
  Slugge
  Slugg
  弹头
  SLU
  SL
  小号
  单桅
  lugge
  Lugg填入
  耳
  鲁
  升

不断。

到目前为止,这是我的代码的一部分,应该会解决问题:

private static void stringParser(String str)
{
    if(str.length() < 1)
    {
        return;
    }
    else if(str.length() == 0)
    {
        removeFirstChar(str, 1);
    }
    else
    {
        System.out.println(str);
        stringParser(str.substring(0, str.length() - 1));
    }
}   // End stringParser method

private static void removeFirstChar(String str, int i)
{
    String strNew = str.substring(i);
    stringParser(strNew);
    return strNew;
}   // End removeFirstChar method

我想我已经拥有了我需要的所有部件和部件,但也许只是没有按照正确的顺序来完成我想要的工作。

非常感谢任何帮助。 谢谢!

1 个答案:

答案 0 :(得分:1)

我在您的代码中添加了以下内容。看看是否有效

public static void main(String[] args) {
    String str = "slugger";

    for(int i=0;i<str.length();i++) {
        stringParser(str.substring(i)); 
    }


    }

完整代码.....

public class Test {

    public static void main(String[] args) {
    String str = "slugger";

    for(int i=0;i<str.length();i++) {
        stringParser(str.substring(i)); 
    }


    }

    private static void stringParser(String str)
    {
        if(str.length() < 1)
        {
            return;
        }
        else if(str.length() == 0)
        {
            removeFirstChar(str, 1);
        }
        else
        {
            System.out.println(str);
            stringParser(str.substring(0, str.length() - 1));
        }
    }   // End stringParser method

    private static void removeFirstChar(String str, int i)
    {
        String strNew = str.substring(i);
        stringParser(strNew);
        str = strNew;
    } 

}