zoukankan      html  css  js  c++  java
  • 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;
        }
    }
    
    
  • 相关阅读:
    网络系统集成实习——第四天——2017.9.10
    网络系统集成实习——第三天——2017.9.9
    网络系统集成实习——第二天——2017.9.8
    网络系统集成实习——第一天——2017.9.6
    如何查找文献及规范参考文献引用格式(以石家庄铁道大学图书馆为例)
    MATLAB数值分析实验
    MATLAB常微分方程的数值解法
    MATLAB数值积分法
    【工匠大道】博客园小技巧
    【夯实PHP基础】PHP 面向对象
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/9575775.html
Copyright © 2011-2022 走看看