假设我有以下字符串:
String numbers = "01010101"
如何排列此字符串中的字符,以便按以下方式打印出来:
00001111
如果有人能够解释这背后的概念那将是非常棒的。
答案 0 :(得分:3)
您可以轻松地将字符串转换为char数组,然后对其进行排序:
{{1}}
答案 1 :(得分:1)
String numbers = "01010101"
char[] charNumbers = numbers.toCharArray();
char[] resultNumbers = new char[numbers.lenght];
char min = charNumbers[0];
int index = 0;
for(int j = 0 ;j=charNumbers.length;j++){
for(int i = 0 ;i=charNumbers.length;i++){
if(min<charNumbers[i]){
index = i;
min = charNumbers[i];
}
}
resultNumbers[j]=min;
charNumbers[index] = (char)255;
}
你可以有两个字符数组&#34; charNumbers&#34;和&#34; resultNumbers&#34 ;,其中charNumbers包含原始字符串=&#34; 01010101&#34;而另一个是空的。
然后我们可以循环charNumbers数组来搜索最小的字符(或最小的数字),在每次迭代中(循环中的步骤)我们检查min是否大于数组中的当前字符,如果它大于我们选择当前字符为最小值,并跟踪其索引。
当我们完成内部循环时,我们得到了min和它的索引,所以我们将min添加到resultNumbers数组并从charNumbers数组中删除min,将其替换为(char)255,这是最大的可能字符。因此,在下一个搜索下一个分钟的循环中,我们不会被前一个分钟愚弄。
继续做这个算法会给你一个排序数组,如果是字符。