如何重新排列字符串中的字符?

时间:2016-02-20 16:27:22

标签: java

假设我有以下字符串:

String numbers = "01010101"

如何排列此字符串中的字符,以便按以下方式打印出来:

00001111

如果有人能够解释这背后的概念那将是非常棒的。

2 个答案:

答案 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,这是最大的可能字符。因此,在下一个搜索下一个分钟的循环中,我们不会被前一个分钟愚弄。

继续做这个算法会给你一个排序数组,如果是字符。