反转字符串 反转字符串

2023-11-17

思想总结:首先将字符串转变为字符数组,再进行遍历并反转字符。

1.反转字符串

 代码:

class Solution {
    public void reverseString(char[] s) {
        reverse(s,0,s.length); //左闭右开
    }

    public static void reverse(char[] ch,int i,int j) { 翻转函数
        
        j = j-1;
        while(i<j) {
            char tmp = ch[i];
            ch[i] = ch[j];
            ch[j] = tmp;
            i++;
            j--;
        }
         
    }
}

2.反转字符串 ||

代码:

class Solution {
    public String reverseStr(String s, int k) {
        char[] arr = s.toCharArray();  //先将字符串 转换为 字符数组
        for(int i=0;i<s.length();i+=2*k) {
            if(i+k <= s.length()) {   //剩余的字符个数肯定大于k
                reverse(arr,i,i+k);  //左开右闭

            }else{
                reverse(arr,i,s.length()); //左开右闭 剩余字符少于k个的情况
            }   
        }

        return new String(arr);
    }

    public static void reverse(char[] ch,int i,int j) { //翻转函数
        j = j-1;
        while(i<j) {
            char tmp = ch[i];
            ch[i] = ch[j];
            ch[j] = tmp;
            i++;
            j--;
        }

    }
}

3.反转字符串中的单词 |||

可以双指针 也可以用栈来做

代码:

class Solution {
    /* 
    //第一种 双指针
    public String reverseWords(String s) {
        char[] ch = s.toCharArray();
        int left = 0;  //  left保存每一次翻转的最开始位置
        int right=0;   //  right 保存每一次反转的结束位置

        for(;right<ch.length;right++) {
            if(ch[right]==' ') {
                reserve(ch,left,right);   //左开右闭
                left = right+1;
            }
        }
        reserve(ch,left,right);   //翻转最后一组字符串



        return new String(ch);  //字符数组转换为字符串
    }
    public static void reserve(char[] ch,int i ,int j) {  //自定义翻转函数
        j = j-1;
        while(i<j) {
            char tmp = ch[i];
            ch[i] = ch[j];
            ch[j] = tmp;
            i++;
            j--;
        }
    }*/


    //2. 用栈来做
    public String reverseWords(String s) {

        Stack<Character> stack = new Stack<>();
        char[] ch = s.toCharArray();
        StringBuilder sb = new StringBuilder();

        for(int i = 0;i<ch.length;i++) {
            if(ch[i]!=' ') {
                stack.push(ch[i]);
            }else{
                while(!stack.isEmpty()) {
                    sb.append(stack.pop());
                }
                sb.append(' ');
            }
        }
        while(!stack.isEmpty()) {
                    sb.append(stack.pop());
                }

        return sb.toString();
    }


}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反转字符串 反转字符串 的相关文章

  • Java new Date() 打印

    刚刚学习 Java 我知道这可能听起来很愚蠢 但我不得不问 System out print new Date 我知道参数中的任何内容都会转换为字符串 最终值是 new Date 返回对 Date 对象的引用 那么它是如何打印这个的呢 Mo
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 使用 Android 发送 HTTP Post 请求

    我一直在尝试从 SO 和其他网站上的大量示例中学习 但我无法弄清楚为什么我编写的示例不起作用 我正在构建一个小型概念验证应用程序 它可以识别语音并将其 文本 作为 POST 请求发送到 node js 服务器 我已确认语音识别有效 并且服务
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • Final字段的线程安全

    假设我有一个 JavaBeanUser这是从另一个线程更新的 如下所示 public class A private final User user public A User user this user user public void
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 编译器抱怨“缺少返回语句”,即使不可能达到缺少返回语句的条件

    在下面的方法中 编译器抱怨缺少退货声明即使该方法只有一条路径 并且它包含一个return陈述 抑制错误需要另一个return陈述 public int foo if true return 5 鉴于Java编译器可以识别无限循环 https
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的

随机推荐

  • vue 读取Excel文件中的日期,转为所需要的时间格式

    const FileDate date number type String gt if date let year month day HH mm ss const time new Date date 1 24 3600000 1 8
  • 使用vue-video-player播放视频

    1 npm安装 vue video player videojs contrib hls 2 在main js中引入 import Vue from vue import App from App vue import router fro
  • python包管理-conda(miniconda)

    配置整理 channels https mirrors tuna tsinghua edu cn anaconda pkgs main http mirrors aliyun com anaconda pkgs main show chan
  • vue-router刷新页面后回到首页

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 今天给大家分享一个小知识点 注意查收 平时我们再写vue项目配置完路由之后会发现他不会自动回到首页 解决方法很简单 加个判断就可以啦 在App
  • Tomcat的卸载和安装

    Tomcat的卸载和安装 一 Tomcat卸载 1 删除Tomcat安装目录 2 删除相关注册表 3 删除Tomcat service 二 Tomcat安装 1 下载Tomcat安装包 2 解压和启动Tomcat 3 设置环境变量 4 查看
  • DTMF信号检测分析(Matlab)

    基于Matlab平台的DTMF信号检测 1 将录制好的一段按键音读入到Matlab平台 2 设计带通滤波器 去噪处理 可选 3 将给个按键音对应的信号一次分割 4 计算分割后信号的相应的频点值 幅度最大的两个点即为该信号的高低频 5 显示音
  • HTML特效推荐,超级惊艳 10款HTML5动画特效推荐[转]

    ylbtech html5 democss 今天咱们要来推荐 10 款超级惊艳的 HTML5 动画特效 有一些是基于 CSS3 和 jQuery 的 比较实用 特别是前几个 HTML5 动画 简直酷毙了 如今将它们分享给你们 也许你能用到这
  • python基本数据类型——整型,浮点型,复数,字符串

    由于也是初学python 所以在这里简要介绍一下python基础的数据类型 好在宏观上有个把握 整数类型 python里面的整数类型可正可负 不像其他的语言 python的整数并没有取值范围的限制 如 pow x y 函数用来计算x的y次方
  • python中使用提示的python -m pip install --upgrade pip升级失败解决方案

    1 使用python m pip install upgrade pip升级失败 2 使用python m pip install U force reinstall pip依然失败 3 使用pip install user upgrade
  • 出现 ERROR StatusLogger Log4j2 could not find a logging implementation.

    控制台出现 ERROR StatusLogger Log4j2 could not find a logging implementation Please add log4j core to the classpath Using Sim
  • 阿里研究员:软件测试中的18个难题

    简介 对于软件测试来说 怎么样才算测够了 如何评价测试的有效性 那么多测试用例 以后怎么删 在软件测试中会遇到非常多的问题 阿里研究员郑子颖分享了18个他总结出的难题以及相关看法 希望对同学们有所启发 十多年前我在上一家公司的时候看到过内部
  • 17、系统设计篇-技术选型

    技术选型 就是在两个或多个技术方案中选择适合当前项目情况的方案 技术选型不仅是个技术的选择 也是一个和项目情况密切相关的项目决策 技术选型 本质上是项目决策的一种 要做好技术选型 就是要做好项目决策 一 项目决策需考虑的角度 1 时间 范围
  • 微信小程序强制更新

    目录 冷启动 热启动 小程序更新机制 强制更新方案 如何测试 冷启动 热启动 冷启动 如果用户首次打开 或小程序销毁后被用户再次打开 此时小程序需要重新加载启动 即冷启动 热启动 如果用户已经打开过某小程序 然后在一定时间内再次打开该小程序
  • QML 单例组件

    作者 一去 二三里 个人微信号 iwaleon 微信公众号 高效程序员 在使用 QML 开发时 我们经常需要自定义组件 来实现一些通用的 UI 元素 如导航栏 圆形进度条等 这样做的好处是 可以将复杂的界面逻辑封装到一个独立的组件中 从而提
  • Java基础--- 构造函数和super关键字

    Java基础 构造函数和super关键字 有参数构造函数和无参数构造函数 super关键字 Constructor Chaining 如果一个类会被继承 最好显性的写出无参构造函数 有参数构造函数和无参数构造函数 无参构造函数 在创建对象时
  • 步进电机的计算机控制系统设计,步进电机控制系统的设计与实现

    摘要 论文介绍了步进电机的控制原理 利用脉冲叠加原理 以Verilog HDL为实体设计输入 设计并实现了一套集成于FPGA内部的步进电机控制系统 该系统可以控制步进电机实现定速 加速 减速 且速率和加速度都能做到连续可调等功能 该方法具有
  • uni-app 动态修改组件样式

    子组件
  • 以太坊(ethereum)技术开发相关资料

    收集所有以太坊 ethereum 技术开发相关资料 INTRO 介绍 Started 入门 区块链技术指南 区块链领域比较系统的入门资料 什么是以太坊 什么是智能合约 以太坊智能合约入门概念 理解区块链 区块链关键要点讲解 一 简单易懂地介
  • C++ 模板类 模板成员函数

    最近看了C 的sigslot库 对其里面模板类 模板成员函数的一些用法记录下 include
  • 反转字符串 反转字符串

    思想总结 首先将字符串转变为字符数组 再进行遍历并反转字符 1 反转字符串 代码 class Solution public void reverseString char s reverse s 0 s length 左闭右开 publi