Как переставить элементы массива с целочисленным символом и символами?

У меня есть массив в виде

{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);
            }
        }
    }

сначала я попытался переместить все свои целые числа в свой массив последним и удалить его из исходной позиции, а также попытался сделать то же самое с оставшимися условиями ... но застрял здесь, сам не мог двигаться дальше.

Какие-нибудь попытки пока?

Andronicus 07.04.2019 12:47
Thank u in advance ... Stack Overflow не является бесплатной службой написания коротких кодов, как McDonald's (которая, однако, подает картофель фри, а не код). Если вам нужна помощь, вам придется показать нам какой-нибудь код, который вы жарили (извините... пытался).
Tim Biegeleisen 07.04.2019 12:47

Извините за это, я добавил код, который пробовал, пожалуйста, посмотрите

Baranidharan 07.04.2019 13:04
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
4
3
161
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я сделал свою логику, и она работает следующим образом:

  • Сначала подсчитайте, сколько 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;
    }
}

ПРИМЕЧАНИЕ: Есть несколько способов сделать это, это может показаться немного наивным, но во время интервью они просто хотят знать, находитесь ли вы на правильном пути, чтобы найти решение, просто ходить вокруг да около.

Вы поняли логику? Если да, то я рад помочь. Если вы найдете какой-либо ответ, который поможет, вы всегда можете проголосовать за него :)

Zain Arshad 07.04.2019 15:40

Другие вопросы по теме