递归全排列字符串
2012-10-04 09:09
225 查看
package com.donghao.anagram;
import java.util.Scanner;
public class AnagramApp {
static int size;
static int count;
static char[] arrChar = new char[100];
static int flag = 0;
public static void main(String[] args){
System.out.println("Please enter a word");
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
size = input.length();
count =0;
for(int j=0;j<size;j++){
arrChar[j] = input.charAt(j);
}
doAnagram(size);
}
public static void doAnagram(int newSize){
if(newSize ==1)
return;
for(int j=0;j<newSize;j++){
doAnagram(newSize -1);
//System.out.println("newSize:" + newSize);
if(newSize ==2){
//System.out.println("flag:" + flag++);
displayWord();
}
rorate(newSize);
}
}
public static void rorate(int newSize){
int j;
int position = size - newSize;
char temp = arrChar[position];
for(j=position+1;j<size;j++){
arrChar[j-1] = arrChar[j];
}
arrChar[j-1] = temp;
}
public static void displayWord(){
if(count <99)
System.out.print(" ");
if(count <9)
System.out.print(" ");
System.out.print(++count + " ");
for(int j=0;j<size;j++)
System.out.print(arrChar[j]);
System.out.print(" ");
if(count % 6 ==0)
System.out.println(" ");
}
}
import java.util.Scanner;
public class AnagramApp {
static int size;
static int count;
static char[] arrChar = new char[100];
static int flag = 0;
public static void main(String[] args){
System.out.println("Please enter a word");
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
size = input.length();
count =0;
for(int j=0;j<size;j++){
arrChar[j] = input.charAt(j);
}
doAnagram(size);
}
public static void doAnagram(int newSize){
if(newSize ==1)
return;
for(int j=0;j<newSize;j++){
doAnagram(newSize -1);
//System.out.println("newSize:" + newSize);
if(newSize ==2){
//System.out.println("flag:" + flag++);
displayWord();
}
rorate(newSize);
}
}
public static void rorate(int newSize){
int j;
int position = size - newSize;
char temp = arrChar[position];
for(j=position+1;j<size;j++){
arrChar[j-1] = arrChar[j];
}
arrChar[j-1] = temp;
}
public static void displayWord(){
if(count <99)
System.out.print(" ");
if(count <9)
System.out.print(" ");
System.out.print(++count + " ");
for(int j=0;j<size;j++)
System.out.print(arrChar[j]);
System.out.print(" ");
if(count % 6 ==0)
System.out.println(" ");
}
}
相关文章推荐
- 字符串全排列-递归实现
- 字符串全排列(递归与非递归)
- 字符串数组元素排列与组合的Java递归实现
- 运用递归排列字符串案例
- 字符串的全排列和组合算法(递归非递归)
- 字符串的全排列非递归实现算法
- 字符串全排列与全组合的递归实现-Java版
- 字符串的全排列:看似繁杂,递归则简。
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- 95 1.判断一字符串是不是对称 2.用递归的方法判断整数组 a[N]是不是升序排列
- 剑指Offer28字符串的排列(递归和非递归实现)扩展有重复元素的排列,字符串的组合种类
- 【递归】输出一个字符串的所有排列
- 剑指offer——面试题28:字符串的排列(递归)
- 字符串的全排列和组合递归非递归--排列组合扩展问题
- 编写一个函数(递归实现) 实现:将参数字符串中的字符反向排列。
- 【C语言】编写一个函数reverse_string(char * string)(递归实现),将参数字符串中的字符反向排列,不能使用C函数库中的字符串操作函数。
- 字符串的全排列和组合递归非递归--排列组合扩展问题
- C语言:编写reverse_string(char * string)(递归实现)函数,将参数字符串中的字符反向排列
- 递归实现 参数字符串中的字符反向排列
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。 要求:不能使用C函数库中 的字符串操作函数。