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;
        }
    }
    
    
  • 相关阅读:
    PHP中无限分类、无限回复评论盖楼的实现方法,thinkphp5.0无限分类实例
    PHP中session详解
    使用thinkPHP做注册程序的实例
    虾米盒子系统开发APP
    angular 使用base64密码加密
    开发中遇到的两种表格文本长度处理,即长文本截断
    树组件使用文件夹图标
    angular实现指定DIV全屏
    JS调用浏览器打印机
    使用blob二进制流的方式下载后台文件
  • 原文地址:https://www.cnblogs.com/wupeixuan/p/9575775.html
Copyright © 2011-2022 走看看