当前位置: 首页 > news >正文

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;
    }
}

转载于:https://www.cnblogs.com/wupeixuan/p/9575775.html

相关文章:

  • python3之os、sys
  • 经典类、新式类,网络编程
  • app和bootloader跳转 MSP与PSP
  • 最近的一些心态
  • flex 布局
  • Redis的概念及与MySQL的区别
  • 1078 字符串压缩与解压
  • Go 导入当前项目下的包
  • jmter录制脚本、代理配置和操作
  • Python爬虫教程-31-创建 Scrapy 爬虫框架项目
  • 数据结构(二) 线性表
  • vue使用echarts
  • luogu 1772 物流运输 ZJOI2006 spfa+dp
  • Java快速教程
  • python接口自动化测试二十八:连接SQL sever操作
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • Codepen 每日精选(2018-3-25)
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Electron入门介绍
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Javascript设计模式学习之Observer(观察者)模式
  • JavaScript异步流程控制的前世今生
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • vue-cli在webpack的配置文件探究
  • web标准化(下)
  • 对象引论
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 给新手的新浪微博 SDK 集成教程【一】
  • 技术:超级实用的电脑小技巧
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • gunicorn工作原理
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #图像处理
  • #微信小程序:微信小程序常见的配置传值
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (二)c52学习之旅-简单了解单片机
  • (二)学习JVM —— 垃圾回收机制
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (十六)一篇文章学会Java的常用API
  • (转)jQuery 基础
  • .bat批处理(一):@echo off
  • .java 9 找不到符号_java找不到符号
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Remoting学习笔记(三)信道
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .net反编译的九款神器
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • @Validated和@Valid校验参数区别
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛