查找长度为3或更长的单词的所有组合

时间:2015-02-24 20:01:30

标签: java string algorithm

我正在尝试实现一个程序来查找长度为3或更长的单词的所有可能组合。 我已经实现了algo with print所有组合,例如: 对于单词"数字"它会打印出来 digitla diitgla ... 等等。 但是我还需要输出中长度为3或更长的单词。 例如:dig,dit,git等。

任何人都可以帮助我提供哪些代码来获得上述输出吗?

public class PermTest {

public static void main(String[] args) throws Exception {
    String str = "digital";
    StringBuffer strBuf = new StringBuffer(str);
    doPerm(strBuf,str.length());

}

private static void doPerm(StringBuffer str, int index){

    if(index <= 0)
        System.out.println(str);            
    else { //recursively solve this by placing all other chars at       current first pos
        doPerm(str, index-1);
        int currPos = str.length()-index;
        for (int i = currPos+1; i < str.length(); i++) {//start swapping all other chars with current first char
            swap(str,currPos, i);
            doPerm(str, index-1);
            swap(str,i, currPos);//restore back my string buffer
        }
    } 
}

private  static void swap(StringBuffer str, int pos1, int pos2){
    char t1 = str.charAt(pos1);
    str.setCharAt(pos1, str.charAt(pos2));
    str.setCharAt(pos2, t1);
} 
}   

0 个答案:

没有答案