【Java笔试题】输出字符串的全排列
2016-11-20 14:12
218 查看
1、题目
输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所以字符串abc、bac、bca、cab和cba。
2、解题思想
首先将字符串转成字符数组,然后建立recursionSwap函数对字符数组进行排列,如果起始位置大于等于数组长度,则直接输出,否则循环交换该数组的元素位置,打印不同排列。
3、Java代码
输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a、b、c所能排列出来的所以字符串abc、bac、bca、cab和cba。
2、解题思想
首先将字符串转成字符数组,然后建立recursionSwap函数对字符数组进行排列,如果起始位置大于等于数组长度,则直接输出,否则循环交换该数组的元素位置,打印不同排列。
3、Java代码
public class CombinationABC { public static void main(String[] args) { String str = “abc”; char[] arr = str.toCharArray(); int length = arr.length; recursionSwap(arr,0,length); } public static void recursionSwap(char[] arr,int start,int length){ if(start >= length-1){ print(arr); return; } for(int i = start;i < length;i++){ swap(arr,start,i); recursionSwap(arr,start+1,length); swap(arr,start,i); } } public static void swap(char[] arr,int index1,int index2){ //交换元素 char temp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = temp; } public static void print(char[] arr){ //打印数组 for(int i=0;i<arr.length;i++){ System.out.print(arr[i]); } System.out.println(); } }
相关文章推荐
- 【Java笔试题】输出字符串的所有组合
- 【Java笔试题】截取字符串并按字节分别输出
- 编写将给定字符串倒序输出的函数[Java笔试题]
- 【Java笔试题】输出字符串中第一个不重复的字符
- POJ 1731 Orders 按序输出一个字符串的全排列 next_permutation()
- 递归的应用,输出字符串的所有排列(java)
- Java 输出反转字符串
- 【Java】编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
- Thinking in java 从标准输出读取字符串
- java编写输出一个字符串中大写英文字母数、小写英文字母数以及非英文字母数
- POJ 1731 Orders 按序输出一个字符串的全排列 next_permutation()
- Java.util.Date类型格式化输出和字符串转Date类型
- java 字符串的反转输出
- java一个算法题:输出一个字符串中出现次数最多的字符,以及次数
- java中用递归将字符串做各种排序输出
- Java字符串空格处理(无论有几个空格,都输出为1个空格,去除字符串前后的全角空格)
- java实现输出字符串中的数字字符
- Java中输出16位长度的二进制字符串,不足以0补齐
- Java笔试时易考察到的数组与字符串用法小结
- java把字符串输出到文件和读取文件