【发布时间】:2012-08-24 18:11:08
【问题描述】:
我是一名 10 年级的高中生,试图解决一本关于 Java 的数据结构和算法书中的一些问题。
其中一个问题是打印字符串的所有排列。
class C14
{
public static void main(char a[])
{
// char[] a = {'c','a','r','b','o','n'};
int c=0,w=0;
for(int q = 0;q<a.length;q++)
{
for(int i=0;i<a.length;i++)
{
for(int j=1;j<a.length;j++)
{
for(int k=1;k<a.length-1;k++)
{
for(int z=0;z<a.length;z++)
{
System.out.print(a[z]);
c++;
}
w++;
System.out.println();
char p=a[k+1];
a[k+1]=a[k];
a[k]=p;
}
System.out.println();
}
System.out.println();
char x=a[0];
a[0]=a[1];
a[1]=x;
}
}
System.out.println(" Character count = " + c);
System.out.println(" Word count = " + w);
}
}
这是我的尝试。这本书要求我为字符'c','a','r','b','o','n'做这件事。 我的解决方案就是这样做的,但是当我尝试使用 3 或 4 个字母的单词时,它会给我重复。如果我删除最外层的循环并尝试打印它,它适用于 3 和 4 个字母的单词,但不适用于 5+ 字母的单词。
我很乐意澄清我的推理,我知道这不是最有效的,但请记住,我才 10 年级,这是我首先想到的。
有人可以帮助我吗,或者至少提示一下出了什么问题? 请不要建议递归解决方案,因为我想先迭代地完成它。 谢谢, 苏米特。
【问题讨论】:
-
这个怎么样 - stackoverflow.com/questions/11915026/… ?
-
感谢您的回复。欣赏它。但问题是,我认为我不能使用 StringBuilder 和子字符串函数等。 (不允许)
-
您想对数组 'a' 进行排列,而不会在每次 'a' 的大小发生变化时更改循环?
标签: java string permutation