如何附加堆叠的字符值

Posted

技术标签:

【中文标题】如何附加堆叠的字符值【英文标题】:How to append stacked character values 【发布时间】:2021-11-24 16:41:46 【问题描述】:

我需要帮助将推送的元素附加到堆栈中。我希望下面的 returnItems 方法将推送的元素返回到堆栈中,如果它是回文,它将用于与下面的字符串进行比较。

这个字符串的每个字符都被压入堆栈:abcdef

这是 returnItems 方法。如何修改粗体部分以获得返回值(例如:上例中的 fedcba):

public T returnItems() 
    Node<T> temp = top;
    T value = null;

    if (top == null)  // checks if stack is empty
        System.out.println("Stack is empty");
        value = null;
    

    System.out.println("Elements: ");
    while (temp.getInfo() != null) 
        value = temp.getInfo(); // get the current character

        // How do I append the characters that the value variable temporarily holds
        // for each loop
        ***value = (T) (value + " "  + temp.getLink());*** // append it to the current character

        if (temp.getLink() == null)  // if the next link is null, the loop will break
            break;
        

        temp = temp.getLink(); // else, get the next link
    
    return value;

【问题讨论】:

为什么不使用 Java Stack 类? 我们需要自己为我们的主题实现它。 【参考方案1】:

当您将 T 用于堆栈上的两个元素(对于 char 可能是 Character)和结果 String 时,必须假设您有一个 Stack&lt;String&gt; 左右,因此是一个 @ 987654325@.

public String returnItems()     
    String reversed = ""; // Better a StringBuilder.
    while (top != null) 
        String ch = top.getInfo(); // get the current character
        reversed = reversed + ch;
        top = top.getLink(); // or `pop()` or such.
    
    return reversed;

所以:使用具体类型,而不是 T。这意味着 returnItems 必须在 Stack 类本身中,因为回文仅用于字符堆栈(堆栈用法)。我本来希望看到:

class Stack<T> 
    T top()  ... 
    boolean isEmpty()  ... 
    T pop()  ... 
    void push(T item)  ... 


Stack<Character> charStack = new Stack<>();

public String returnItems()     
    String reversed = ""; // Better a StringBuilder.
    while (!charStack.isEmpty()) 
        char ch = charStack.pop(); // get the current character
        reversed += ch;
    
    return reversed;

【讨论】:

以上是关于如何附加堆叠的字符值的主要内容,如果未能解决你的问题,请参考以下文章

如何在if条件中附加字符串值

如何在通过 Angular 中的服务发送的接收组件中堆叠值?

如何堆叠列和唯一值的数据帧?

如何在javascript中使用appendChild附加字符串

mysql如何连接/附加二进制数据类型

如何根据条件行值对 pandas 数据框进行取消堆叠或取消透视?