Leetcode#344. Reverse String(反转字符串)

题目描述

编写一个函数,其作用是将输入的字符串反转过来。

示例 1:

输入: "hello"
输出: "olleh"

示例 2:

输入: "A man, a plan, a canal: Panama"
输出: "amanaP :lanac a ,nalp a ,nam A"

思路

思路一:

逆序拼接字符串

思路二:

依次交换两边的值

思路三:

直接调用StringBuilder 的 reverse()

思路四:

用栈来实现反转

代码实现

package String; import java.util.Stack; /** * 344. Reverse String(反转字符串) * 编写一个函数,其作用是将输入的字符串反转过来。 */ public class Solution344 { public static void main(String[] args) { Solution344 solution344 = new Solution344(); String s = "hello"; System.out.println(solution344.reverseString_4(s)); } /** * 逆序拼接字符串 * * @param s * @return */ public String reverseString(String s) { StringBuilder str = new StringBuilder(); for (int i = s.length() - 1; i >= 0; i--) { str.append(s.charAt(i)); } return String.valueOf(str); } /** * 依次交换两边的值 * * @param s * @return */ public String reverseString_2(String s) { char[] chars = s.toCharArray(); int i = 0; int j = chars.length - 1; while (i < j) { char temp = chars[i]; chars[i] = chars[j]; chars[j] = temp; i++; j--; } return new String(chars); } /** * 直接调用StringBuilder 的 reverse() * * @param s * @return */ public String reverseString_3(String s) { return new StringBuilder(s).reverse().toString(); } /** * 用栈来实现反转 * * @param s * @return */ public String reverseString_4(String s) { Stack<Character> stack = new Stack<>(); char[] chars = s.toCharArray(); String res = ""; for (int i = 0; i < chars.length; i++) { stack.push(chars[i]); } for (int i = 0; i < chars.length; i++) { res += stack.pop(); } return res; } } 
posted @ 2018-09-02 22:31 武培轩 阅读( ...) 评论( ...) 编辑 收藏