字符串的排列
public class Permute { public static void main(String[] args) throws IOException { System.out.println("Enter a string"); BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in)); String text = bufReader.readLine(); shuffle("",text); } public static void shuffle(String dummy, String input){ if(input.length() <= 1) System.out.println(dummy+input); else{ for(int i=0; i <input.length();i++){ input = input.substring(i,1) + input.substring(0,i) + input.substring(i+1); shuffle(dummy+input.substring(0,1),input.substring(1)); } } } }
我试图打印输入的字符串的所有排列。 我真的无法猜到哪里出错了,因为在纸面上我发现这个正在执行。 哪里出错了。
尝试更改您的随机播放:
public static void shuffle(String dummy, String input){ if(input.length() <= 1) System.out.println(dummy+input); else{ for(int i=0; i
public class Permute { public static void main(String[] args) throws IOException { System.out.println("Enter a string"); BufferedReader bufReader = new BufferedReader(new InputStreamReader(System.in)); String text = bufReader.readLine(); shuffle("",text); } public static void shuffle(String dummy, String input){ if(input.length() <= 1) System.out.println(dummy+input); else{ for(int i=0; i
它应该是input.substring(i,i + 1)而不是input.substring(i,1)。 因为每次我只需要1个字符是常量,这是在字符串的开头,而其他字符必须是混乱的。
这个错误是我假设substring的function是substring(beginIndex,length)。 但它是substring(beginIndex,endIndex)。
@Oli:谢谢你的帮助。
因为这看起来像我曾经做过的家庭作业,我会在这里帮助你。 你需要两个循环,一个在另一个内。
for(int i;i
这将使您能够生成所需的排列。
用for
循环替换for
循环中的两行:
String partString = input.substring(0, i) + input.substring(i + 1); shuffle(dummy + input.charAt(i), partString);
因为这看起来像你的作业,我会让你弄明白。 如果没有,稍后会发布解释(得到回到我的日常工作;))