Java语言程序设计基础篇_编程练习题**18.25 (字符串排列)

题目:**18.25 (字符串排列)

编写一个递归方法,输出一个字符串的所有排列。例如,对于字符串abc,输出为:

abc
acb
bac
bca
cab
cba

提示:定义下面两个方法,第二个方法是一个辅助方法。

public static void displayPermutation(String s)
public static void displayPermutation(String s1, String s2)

第一个方法简单地调用displayPermutation("",s)。第二个方法使用循环,将一个字符串从s2移到s1,并使用新的s1和s2递归地调用该方法。基础情况是s2为空,将s1打印到控制台。 

  • 代码示例

编程练习题18_25StringArrangement.java 

package chapter_18;

import java.util.Scanner;

public class 编程练习题18_25StringArrangement {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("Enter a string: ");
		String s = input.next();
		displayPermutation(s);
		
		input.close();
	}
	public static void displayPermutation(String s) {
		displayPermutation("", s);
	}
	public static void displayPermutation(String s1, String s2) {
		//System.out.println("\""+s1+"\", \""+s2+"\"");//显示调用情况
		if(s2 == "") 
			System.out.println(s1);
		for(int i = 0;i < s2.length();i++) {
			String shuffle1 = s1+s2.charAt(i);
			String shuffle2 = s2.subSequence(0, i)+s2.substring(i+1);
			displayPermutation(shuffle1,shuffle2);
		}
			
	}

}
  •  输出结果
Enter a string: abc
abc
acb
bac
bca
cab
cba
  • 输出调用情况 
Enter a string: abc
"", "abc"
"a", "bc"
"ab", "c"
"abc", ""
abc
"ac", "b"
"acb", ""
acb
"b", "ac"
"ba", "c"
"bac", ""
bac
"bc", "a"
"bca", ""
bca
"c", "ab"
"ca", "b"
"cab", ""
cab
"cb", "a"
"cba", ""
cba

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值