我有一个
形式的数组{1, a, D, 3, h, 2, C, Z, $, o, 5}
结果数组应为
{1, 3, 2, 5, a, h, o, D, C, Z, $}
重新排列的数组应首先包含数字,然后是小写字母,然后是大写字母,最后是特殊字符,而无需使用另一个数组。
先谢谢你...
private static void arrangeArrayInOrder(List<Character> arr) {
for (int i = 0; i < arr.size(); i++) {
if (arr.get(i) >= '0' && arr.get(i) <= '9') {
arr.add(arr.get(i));
arr.remove(i);
}
}
}
首先,我尝试将所有整数最后移到数组中,并将其从原始位置删除,并尝试在剩余条件下执行相同操作。.但是卡在这里本身无法继续进行。
答案 0 :(得分:0)
我已经阐明了自己的逻辑,它的工作原理如下:
numbers, small, capitals and special
个字符。For-loop
并开始将其插入正确的位置。工作代码:
public class stackLong
{
static char[] array = {'1', 'a', 'B', '2', 'h', '3', 'C', 'Z', '$', 'o', '5'};
public static void main(String[] args)
{
int number=0,small=0,capital=0,special=0;
//calculates the total number of characters of each type
for(int i =0; i<array.length;i++)
{
if (array[i]>=65 && array[i]<=90) // capital
capital++;
else if (array[i]>=97 && array[i]<=122) //small
small++;
else if (array[i]>=48 && array[i]<=57) // number
number++;
else if ((array[i]>0 && array[i]<=47)||(array[i]>=58 && array[i]<=64)|| (array[i]>=91 && array[i]<=96)||(array[i]>=123 && array[i]<=127))
special++;
}
// sets their starting index
int smallIndex = number;
int capitalIndex = small + smallIndex;
int specialIndex = capitalIndex + capital;
number = 0;
for(int i =0; i<array.length;i++)
{
if (array[i]>=48 && array[i]<=57) // number
{
swap(i,number);
number++;
}
}
for(int i =smallIndex; i<array.length;i++)
{
if (array[i]>=97 && array[i]<=122) //small
{
swap(i,smallIndex);
smallIndex++;
}
}
for(int i =capitalIndex; i<array.length;i++)
{
if (array[i]>=65 && array[i]<=90) // capital
{
swap(i,capitalIndex);
capitalIndex++;
}
}
for(int i =specialIndex; i<array.length;i++) // special
{
if ((array[i]>0 && array[i]<=47)||(array[i]>=58 && array[i]<=64)|| (array[i]>=91 && array[i]<=96)||(array[i]>=123 && array[i]<=127))
{
swap(i,specialIndex);
specialIndex++;
}
}
System.out.printf("\n");
for(int j =0; j<array.length;j++)
{
System.out.printf(array[j] + " ");
}
}
public static void swap(int frst, int scnd)
{
char temp = array[frst];
array[frst] = array[scnd];
array[scnd] = temp;
}
}
注意::有几种方法可以做到这一点,这似乎有些天真,但是在面试过程中,他们只是想知道您是否走上了正确的道路,以寻求超越常规的解决方案。灌木丛。