剑指offer面试题28——字符串排序

题目要求

输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba


解题思路:

我们求整个字符串的排列,可以看成两步,首先求可能出现在第一个位置上的字符,即把第一个字符和后面所有的字符交换。第二步固定一个字符,求后面所有字符的全排列。这是一个递归的思想。


程序代码(Java):

import java.util.*;

public class sort_Char
{
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		String str=sc.nextLine();
		char ch[]=str.toCharArray();
		sortChar(ch,0);
	}
	
	public static void sortChar(char[] ch,int index)
	{
		if (ch==null)
		{
			return ;
		}
		if (index==ch.length)
		{
			System.out.println(ch);
		}
		for (int i=index; i<ch.length; i++)
		{
			char temp=ch[index];
			ch[index]=ch[i];
			ch[i]=temp;
			sortChar(ch,index+1);
			temp=ch[index];
			ch[index]=ch[i];
			ch[i]=temp;
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值