java - 查找单词中的字母子集

时间:2015-03-08 13:02:01

标签: java string permutation subset anagram

我试图在一个单词中找到字母子集的字谜;例如,如果单词是" hello",程序将检查整个单词,然后单词丢失1个字母,依此类推。

这是我的代码,我不确定我在哪里做错了:

import java.util.*;
import java.io.*;
class Perm {
    public static void main(String[] args) {

        System.out.println(permutations("hello")); 
    }

    public static String permutations(String word) {
        String s = "";
        for(int i=0; i<word.length(); i++) {
            char ithChar = word.charAt(i);
            String newWord = word.substring(0,i) + word.substring(i+1);
            s = permutations(newWord);
        }
        return s;

    }
}

2 个答案:

答案 0 :(得分:0)

我认为你不需要这种方法的误解。尝试重写这样的东西:

public static void permutations(String word) {
    for(int i = word.length(); i > 0; i--){
        System.out.println(word.substring(0, i));
    }        
}

如果你不需要存储它,只是为了打印,这是可以的。 但是你猜的主要思想是使用递减循环。

答案 1 :(得分:0)

尝试这样的事情:

public class Perm {
  public static void main(String[] args) { 
    String word = "hello";
    for(int i=word.length(); i!=0; i--) {
        String permutation = word.substring(0, i);
        System.out.println(permutation);
    }
  }
}

每次循环运行时,单词结尾都会有一个字符,你会得到这样的输出:

hello
hell
hel
he
h

(也应该很容易改变它以从单词的开头取出字母)。

我希望这是你想要的,因为问题不是很清楚。 (您可能还想查看this answer。)