如何附加堆叠的字符值
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<String>
左右,因此是一个 @ 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;
【讨论】:
以上是关于如何附加堆叠的字符值的主要内容,如果未能解决你的问题,请参考以下文章
如何在通过 Angular 中的服务发送的接收组件中堆叠值?