import java.util.HashSet;
public class CharsToStrings {
public static void generateString(char[] charArray) {
}
/**
* @param args
*/
public static void main(String[] args) {
char[] charArray = new char[]{'a', 'b', 'c', 'd'};
StringBuffer strBuf = new StringBuffer(3);
int number = 0;
// 循环方式
for (int i = 0; i < charArray.length; i++) {
strBuf.delete(0, strBuf.length());
strBuf.append(charArray[i]);
for (int j = 0; j < charArray.length; j++) {
if (j == i)
continue;
strBuf.delete(1, strBuf.length());
strBuf.append(charArray[j]);
for (int k = 0; k < charArray.length; k++) {
if (k == j || k == i)
continue;
strBuf.delete(2, strBuf.length());
strBuf.append(charArray[k]);
for (int p = 0; p < charArray.length; p++) {
if (p == k || p == j || p == i)
continue;
strBuf.delete(3, strBuf.length());
strBuf.append(charArray[p]);
System.out.println(strBuf.toString());
number++;
}
}
}
}
System.out
.println(number
+ "\n---------------------------------------------------------------------");
// 数学计数方式
number = 0;
long count = 1;
for (int i = 0; i < charArray.length; i++) {
count *= charArray.length;
}
StringBuffer charBuf = new StringBuffer(3);
HashSet<Integer> remainderSet = new HashSet<Integer>(3);
// System.out.println(count);
for (long i = 0; i < count; i++) {
charBuf.delete(0, charBuf.length());
remainderSet.clear();
long dividend = i;
int n = charArray.length;
while (n-- >= 0) {
int remainder = (int) (dividend % charArray.length);
if (remainderSet.contains(remainder)) {
break;
} else {
remainderSet.add(remainder);
charBuf.append(charArray[remainder]);
dividend /= charArray.length;
}
}
if (n < 0) {
charBuf.reverse();
System.out.println(i + ": " + charBuf.toString());
number++;
}
}
System.out
.println(number
+ "\n---------------------------------------------------------------------");
}
}
输出:
abcd
abdc
acbd
acdb
adbc
adcb
bacd
badc
bcad
bcda
bdac
bdca
cabd
cadb
cbad
cbda
cdab
cdba
dabc
dacb
dbac
dbca
dcab
dcba
24
---------------------------------------------------------------------
27: abcd
30: abdc
39: acbd
45: acdb
54: adbc
57: adcb
75: bacd
78: badc
99: bcad
108: bcda
114: bdac
120: bdca
135: cabd
141: cadb
147: cbad
156: cbda
177: cdab
180: cdba
198: dabc
201: dacb
210: dbac
216: dbca
225: dcab
228: dcba
24
---------------------------------------------------------------------
分享到:
相关推荐
某个二维数组存放了一系列的字符串,试利用排序的一些算法(如插入、冒泡、快速排序等)例如:二维数组的字符串如下: char s[][20]={“while”,”if”,“else”,”do”,“for”,”switch”,“case”,};
利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
现有若干由红、白、蓝三种颜色的条块序列,要将它们重新排列使所有相同颜色的条块在一起。本问题要求将所有红色的条块放最左边、所有白色的条块放中间、所有蓝色的条块放最右边。 输入 第1行是一个正整数n(n),...
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上再想吃时,见只剩一个桃子了。求第一...
数组就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标。组成数组的各个变量称为数组的元素。数组是在...
实例185 将若干字符串按照字母 顺序输出 262 实例186 用指向函数的指针比较大小 263 实例187 寻找指定元素的指针 265 实例188 字符串的匹配 266 第12章 常用数据结构 269 实例189 比较计数 270 实例190 找出最高分 ...
LCD是一种介于固态与液态之间的物质,本身是不能发光的,需借助要额外的光源才行。最早的液晶显示器只有上下两个灯管,发展到现在,普及型的最低也是四灯,高端的是六灯。四灯管设计分为三种摆放形式:一种是四个边...
3.数组名不能与其它变量名相同,例如: void main() { int a; float a[10]; …… } 是错误的。 4.方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0...
在SQL语句中 字符串是由单引号括起来的若干字符 13 select ename||" niahao""dajiahao" from emp;如果字符串中本身就有一个单引号 那么在SQL语句中进行表示时 用两个单引号表示一个单引号 14 ...
实例068 将若干字符串按照字母顺序输出 85 2.3 指针与函数 86 实例069 用指向函数的指针比较大小 86 实例070 使用返回指针的函数查找最大值 88 实例071 使用指针函数求学生成绩 89 实例072 寻找指定元素...
3、 方法中的内部类能不能访问方法中的局部变量,为什么? 4、 定义一个交通灯枚举,包含红灯、绿灯、黄灯,需要有获得下一个灯的方法,例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯。 5、 编写...
这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其中包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位...
在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列。 为了配合每年的倒计时,同学们决定排出——“数字舞蹈”。顾名思义就是所有人一起排成若干个数字 -___-|||| 更为创新的是,每个人都是...
在微型计算机的系统总线中不包括 ( ) A.内部总线 B.地址总线 C.数据总线 D.控制总线 3.GB18030-2000《信息技术交换用汉字编码字符集基本集的扩充》共收录汉字 ( ) A.27000多个 B.18000多个 C.6000多个 D...
3、多个工作表中相同位置的行(列)集中到同一表:本工作簿中有若干格式相同的表,为了便于观察各表相同位置数据的变化,可以首先用鼠标选定要观察的区域,然后执行本命令,则各工作表的同位置区域数据集中排列到同一...
1、假如我们在开发一个系统时需要对员工进行建模,员工包含 3 个属性:姓名、工号以及工资。经理也是员工,除了含有员工的属性外,另为还有一个奖金属性。请使用继承的思想设计出员工类和经理类。要求类中提供必要的...
文件song.txt存放了若干首歌曲的 记录,每条记录由歌名(40个字符)和演唱者(30个字符)组成,现将该文件记录的结构改成下面的格式,以减少文件长度。 M N ..... ..... 其中:M是歌名长度,N是...
由基本的LCD显示原理可知,LCD显示一个点重要的因素就是点的坐标...其中,段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形、曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字,还可以显示各
由基本的LCD显示原理可知,LCD显示一个点最重要的因素就是点的坐标...其中,段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形、曲线和汉字显示的要求;而点阵式LCD不仅可以显示字符、数字,还可以显示