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 [],以便我可以从make函数返回char []
答案 0 :(得分:1)
好吧,如果需要的话,很容易编程:
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
构建的集合或类似的集合(如果您有很多字符)。毕竟,每个字符都使用一个引用是很浪费的(但是,如今是计算机)。
答案 1 :(得分:0)
如果您仅使用Character
,则可以使用toArray <T> T[] toArray(T[] a)
替代
返回包含此Vector中所有元素的数组。 正确的顺序;返回数组的运行时类型是 指定的数组。
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);
//...
}