Java Deque算法
我现在是Java的新手,目前学习Decqueue。
我的任务很容易,但是我做错了什么,并且希望在这项特定任务上提供一些帮助,以及一些有关如何处理此类任务的技巧。
我有2个脱口机:
chardeque = [a,e,i,o,u,b](a是b是尾巴)
intdeque = [3,6,9](3是头9是尾巴)。
我需要设置整数的输出和字符从上到下的字符,应该看起来像这样:[3,a,6,e,9,i,i,o,u,u,b] //从上到下。
这是我的代码。我的方法是循环绕过两个脱口机,并用polllast()获得尾巴;方法并将其推到空的Deque -MergedStack。但是,我的输出很接近,但不完全存在:[O,9,U,6,B,3]。我假设我对时循环有问题,有人可以提供帮助吗?
package QueueInterfaceExercise1;
import java.util.ArrayDeque;
import java.util.Deque;
public class Tester {
public static Deque<Object> mergeQueue(Deque<Integer> intQueue, Deque<Character> charQueue) {
//Implement your logic here and change the return statement accordingly
// System.out.println(intQueue);
System.out.println(charQueue);
// [3, 6, 9]
// [a, e, i, o, u, b]
Deque<Object> mergedStack = new ArrayDeque<Object>();
// Object number = intQueue.getLast();
// System.out.println(number);
// mergedStack.addLast(number);
while( !intQueue.isEmpty() && !charQueue.isEmpty() ) {
int number = intQueue.pollLast();
char letter = charQueue.pollLast();
mergedStack.push(number);
mergedStack.push(letter);
}
return mergedStack;
}
public static void main(String[] args) {
Deque<Integer> integerQueue = new ArrayDeque<Integer>();
integerQueue.add(3);
integerQueue.add(6);
integerQueue.add(9);
Deque<Character> characterQueue = new ArrayDeque<Character>();
characterQueue.add('a');
characterQueue.add('e');
characterQueue.add('i');
characterQueue.add('o');
characterQueue.add('u');
characterQueue.add('b');
Deque<Object> mergedQueue = mergeQueue(integerQueue, characterQueue);
System.out.println("The elements in the merged queue are:");
for(Object element: mergedQueue)
System.out.println(element);
}
}
I'm fairly new to Java and learning Dequeue at the moment.
I have a pretty easy task, but I'm doing something wrong and would love some help on this specific task and also some tips on how to approach those kind of tasks.
I am given 2 Deques:
charDeque = [a, e, i , o , u, b] (a is head b is tail)
intDeque = [3, 6, 9] (3 is head 9 is tail).
I'm required to set an output of integers and characters from that from top to bottom should look like this : [3, a, 6, e, 9, i, o, u, b] //top to bottom.
Here's my code. My approach is to loop over the two Deques and get the tail with the pollLast(); method and push it to an empty Deque - mergedStack. However, my output is close but not quite there : [o, 9, u, 6, b, 3]. I assuming I have a problem with the while loop, can anyone assist ?
package QueueInterfaceExercise1;
import java.util.ArrayDeque;
import java.util.Deque;
public class Tester {
public static Deque<Object> mergeQueue(Deque<Integer> intQueue, Deque<Character> charQueue) {
//Implement your logic here and change the return statement accordingly
// System.out.println(intQueue);
System.out.println(charQueue);
// [3, 6, 9]
// [a, e, i, o, u, b]
Deque<Object> mergedStack = new ArrayDeque<Object>();
// Object number = intQueue.getLast();
// System.out.println(number);
// mergedStack.addLast(number);
while( !intQueue.isEmpty() && !charQueue.isEmpty() ) {
int number = intQueue.pollLast();
char letter = charQueue.pollLast();
mergedStack.push(number);
mergedStack.push(letter);
}
return mergedStack;
}
public static void main(String[] args) {
Deque<Integer> integerQueue = new ArrayDeque<Integer>();
integerQueue.add(3);
integerQueue.add(6);
integerQueue.add(9);
Deque<Character> characterQueue = new ArrayDeque<Character>();
characterQueue.add('a');
characterQueue.add('e');
characterQueue.add('i');
characterQueue.add('o');
characterQueue.add('u');
characterQueue.add('b');
Deque<Object> mergedQueue = mergeQueue(integerQueue, characterQueue);
System.out.println("The elements in the merged queue are:");
for(Object element: mergedQueue)
System.out.println(element);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的算法很近。基本上,您希望在任何一个Deque都有元素的同时,将任何一个Deque的元素保留。因此,您需要
或
(不是和
)。像Your algorithm is close. Basically, you want to keep consuming elements from either deque while either deque has elements. So you want an
or
(not anand
). Something like,