基础面试问到:你如何将某个字符串实现倒序输出呢?
程序员文章站
2022-07-14 08:06:00
...
- 当被问到这道题时,你可能觉得很简单呀,但是多种方式确实无法以下浮现在脑海中的。
- 我总结了以下几种实现字符串倒叙输出的方法。
一、利用String的toCharArray()方法
(1)利用String的toCharArray()方法,对数组进行倒序输出(但是不改变原来的字符串)
package com.qiao.day8;
public class StringRerverse1 {
public static void main(String[] args) {
String ss = "asdfghjkl";
char[] charArray = ss.toCharArray();
//倒序循环输出数组
for (int i = charArray.length - 1; i >= 0; i--) {
System.out.print(charArray[i] + " ");
}
}
}
输出结果为:
(2)还是利用toCharArray()方法,但是改变字符串本身,字符串倒序输出的本质是将其对应索引位置的字符交换。
package com.qiao.day8;
public class StringRerverse2 {
public static void main(String[] args) {
String ss = "asdfghjkl";
char[] charArray = ss.toCharArray();
//将第一个和最后一个位置的字符交换位置,依此类推,得到一个倒序的字符串
for (int i = 0; i < charArray.length / 2; i++) {
charArray[i] = ss.charAt(ss.length() - 1 - i);
charArray[ss.length() - 1 - i] = ss.charAt(i);
}
//使用增强for循环遍历输出字符串
for (char c : charArray) {
System.out.print(c);
}
}
}
输出结果为:
二、利用StringBuffer的Reverse()方法
package com.qiao.day8;
public class StringBufferTest {
public static void main(String[] args) {
String ss = "asdfg";
//将字符串添加到StringBuffer中,利用reverse()方法实现倒序
StringBuffer buffer = new StringBuffer(ss);
buffer.reverse();
System.out.println(buffer);
}
}
执行结果为:
三、利用栈的先进后出,后进先出的数据结构特性实现倒序输出
package com.qiao.day8;
import java.util.Stack;
public class ReverseByStack {
public static void main(String[] args) {
String ss = "abcdefg";
Stack<Character> stack = new Stack<Character>();
char[] charArray = ss.toCharArray();
//使用增强for循环使字符数组一一进栈
for (char c : charArray) {
stack.push(c);
}
for (int i = 0; i < ss.length(); i++) {
//字符数组出栈,遍历输出,实现倒序
Character character = stack.pop();
System.out.print(character + " ");
}
}
}
执行结果如下:
四、利用递归完成字符串倒叙输出
package com.qiao.day8;
public class DiguiString {
public static void main(String[] args) {
//使用该字符串完成逆序输出
String ss = "poiuygfeyurfb";
String string = reverse(ss);
System.out.println(string);
}
public static String reverse(String s) {
//判断传入的字符串是否为空
if (s.length() > 0) {
if (s.length() == 1) {
return s;
} else {
return reverse(s.substring(1)) + s.charAt(0);
}
} else {
return "该字符串为空";
}
}
}