首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Deque算法

Java Deque算法
EN

Stack Overflow用户
提问于 2022-06-05 17:10:32
回答 1查看 103关注 0票数 -2

目前,我对Java和学习Dequeue相当陌生。

我有一个相当简单的任务,但我做错了一些事情,我希望在这个特定的任务上有一些帮助,还有一些关于如何处理这些任务的建议。

我得到了两个Deques:

charDeque = a, e, i , o , u, b

intDeque = 3, 6, 9

我需要设置一个整数输出,从上到下的字符应该如下所示: 3,a,6,e,9,i,o,u,b//自上而下。

这是我的密码。我的方法是循环两个Deques,并使用pollLast();方法获取尾部,并将其推送到一个空的中。然而,我的输出接近但不完全在那里: o,9,u,6,b,3。我假设我对while循环有问题,有人能帮忙吗?

代码语言:javascript
复制
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);
        
    }

}
EN

回答 1

Stack Overflow用户

发布于 2022-06-05 17:22:39

你的算法很接近。基本上,您希望从任一deque中保持消费元素,而任何deque都有元素。所以您需要一个or (而不是and)。就像,

代码语言:javascript
复制
public static Deque<Object> mergeQueue(Deque<Integer> intQueue, 
        Deque<Character> charQueue) {
    Deque<Object> mergedStack = new ArrayDeque<>();
    while (!intQueue.isEmpty() || !charQueue.isEmpty()) {
        if (!intQueue.isEmpty()) {
            mergedStack.push(intQueue.pop());
        }
        if (!charQueue.isEmpty()) {
            mergedStack.push(charQueue.pop());
        }
    }
    return mergedStack;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72509476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档