-1
现在我的程序输出[m,r,rm,ru,rum,u,um],由于某种原因,递归方法不会输出rm答案。我一直在追踪它,但我似乎无法正确追踪它,并找出问题所在。我不确定缺失的子集在哪里?谢谢!子集生成器缺少一个可能的子集
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
Prints subsets of String
*/
public class SubsetGenerator
{
private String word="";
private ArrayList<String> subsets;
/**
Constructs a word to generate subsets from
@param text input by user
*/
public SubsetGenerator(String textinput)
{
word=textinput;
subsets = new ArrayList<String>();
}
/**
retrieves word
@return the word
*/
public String getWord()
{
return word;
}
/**
get subsets
@return subset arraylist
*/
public ArrayList<String> getSubsets()
{
if(word.length()==0)
{
subsets.add("");
return subsets;
}
else
{
String removed=word.substring(0,1);
word=word.substring(1);
subsets.add(removed);
for(int i=0;i<word.length();i++)
{
String temp=removed+word.substring(0,i+1);
subsets.add(temp);
}
}
getSubsets();
return subsets;
}
}
/**
This program tests the subset generator.
*/
public class SubsetGeneratorTester
{
public static void main(String[] args)
{
SubsetGenerator generator = new SubsetGenerator("rum");
List<String> subsets = generator.getSubsets();
// Sort the result for checking
Collections.sort(subsets);
System.out.println(subsets);
System.out.println("Expected: [, m, r, rm, ru, rum, u, um]");
}
}
你说你得到 “RM”:'现在我的计划产出[M,R,RM,RU,朗姆酒,U庵]' – amit 2015-03-13 08:43:05
此外,你有一个设计问题 - 这是不是一个将'word'和'subsets'设置为类成员的好习惯,将它们设置为'getSubsets()'的参数要好得多。 – amit 2015-03-13 08:44:49
@amit这就是预期值,预期值是[,m,r,rm,ru,rum,u,um],我的程序输出的结果是相同的东西减去rm – javaProgrammer 2015-03-13 08:48:40