Есть ли способ преобразовать массив Object [] в массив char []? - PullRequest
1 голос
/ 09 февраля 2020
class Solution {
    char[] make(String s){
        Stack<Character> st= new Stack<Character>();
        for(char c:s.toCharArray()){
            if(c!='#'){
                st.push(c);
            }
            else if(!st.isEmpty()){
                st.pop();
            }
        }
        return (char [])(st.toArray());
    }
    public boolean backspaceCompare(String S, String T) {
        char[] ch1=make(S);
        char[] ch2=make(T);
        int i,j;
        if(ch1.length!=ch2.length)
            return false;
        else{
            for(i=0;i<ch1.length;i++){
                if(ch1[i]!=ch2[i]){
                    return false;
                }
            }
        }
        return true;
    }
}

приведенный выше фрагмент кода выдает ошибку: несовместимые типы: Object [] не может быть преобразован в char [] return (char []) (st.toArray ());

я пытался для типизации, используя Character [], но это не может быть преобразовано в char [], очевидно

есть ли в java какой-либо метод для преобразования Object [], содержащего символы, только в массив символов, то есть char [], чтобы я мог может вернуть char [] из функции make

Ответы [ 2 ]

1 голос
/ 09 февраля 2020

Ну, если вам нужно, это легко программировать:

Character[] refArray = (Character[]) st.toArray();
char[] charArray = new char[refArray.length];
for (int i = 0; i < refArray.length; i++) {
    charArray[i] = refArray[i];
}
return charArray;

Обратите внимание, что более предпочтительная коллекция, вероятно, предпочтительнее, возможно, что-то построено вокруг StringBuilder или что-то подобное (если у вас много персонажи). В конце концов, довольно расточительно использовать ссылку на символ (но да, компьютеры сейчас).

0 голосов
/ 09 февраля 2020

Если вы работаете только с Character, вы можете использовать toArray <T> T[] toArray(T[] a) override

Возвращает массив, содержащий все элементы в этом векторе в правильном порядке ; тип времени выполнения возвращаемого массива соответствует типу указанного массива.

Character[] make(String s){
    Stack<Character> st = new Stack<Character>();
    //...
    return st.toArray(new Character[st.size()]);
}

public boolean backspaceCompare(String S, String T) {
    Character[] ch1 = make(S);
    Character[] ch2 = make(T);
    //...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...