这题着实有点bug,Java 用 StringBuffer 的 reverse 方法可以秒;当然,本着复习的初衷,还是用栈再写一遍。两种解法都给出。
题目描述
C++中已经自带堆栈对象stack,无需编写堆栈操作的具体实现代码。
本题目主要帮助大家熟悉stack对象的使用,然后实现字符串的逆序输出
输入一个字符串,按字符按输入顺序压入堆栈,然后根据堆栈后进先出的特点,做逆序输出
输入
第一行输入t,表示有t个测试实例
第二起,每一行输入一个字符串,注意字符串不要包含空格
输出
每行逆序输出每一个字符串
样例输入
2
abcdef
aabbcc
样例输出
fedcba
ccbbaa
Solution:
直接调用 StringBuffer 的 reverse() 方法,秒掉。
import java.util.*;
/**
* @author: Liu Canbin
* @date: 2019/1/2
*/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int times = scanner.nextInt();
for (int i = 0; i <times ; i++) {
StringBuffer s = new StringBuffer(scanner.next());
System.out.println(s.reverse());
}
}
}
使用栈的方法
import java.util.*;
/**
* @author: Liu Canbin
* @date: 2019/1/2
*/
public class Main {
public static void main(String[] args) {
Stack stack = new Stack();
Scanner scanner = new Scanner(System.in);
int times = scanner.nextInt();
for (int i = 0; i <times ; i++) {
String s = scanner.next();
for (int j = 0; j < s.length(); j++) {
stack.push(s.charAt(j));
}
while (!stack.empty()){
System.out.print(stack.pop());
}
System.out.println();
}
}
}