day09--151.翻转字符串里的单词+ 右旋字符串

news2024/11/27 5:35:58

一、151.翻转字符串里的单词

题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/
文章讲解:https://programmercarl.com/0151.%E7%BF%BB%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%87%8C%E7%9A%84%E5%8D%95%E8%AF%8D.html#%E7%AE%97%E6%B3%95%E5%85%AC%E5%BC%80%E8%AF%BE
视频讲解:https://www.bilibili.com/video/BV1uT41177fX

1.1 初见思路

1.先翻转每个单词,再翻转整个字符串
2.消除多余空格

1.2 具体实现

class Solution {
    public String reverseWords(String s) {
 //1.把字符串去掉多余空格
        StringBuilder stringBuilder = removeMoreSpace(s);
       
        //2.翻转整个字符串
        reverseWholeStr(stringBuilder);
        //3.翻转每个单词
        reverAllWord(stringBuilder);
        return stringBuilder.toString();
    }

    public  StringBuilder removeMoreSpace(String s){
        StringBuilder stringBuilder = new StringBuilder();
        int left =0;
        int right = s.length()-1;
        while(s.charAt(left)==' '){
            left++;
        }
        while(s.charAt(right)==' '){
            right--;
        }
        for(int i=left;i<=right;i++){
            //如果是空格,则跳过,得保留一个空格的
            if(s.charAt(i)==' '){
                if(s.charAt(i-1)!=' '){
                    stringBuilder.append(' ');
                }
                continue;
            }
           // System.out.println("i="+i+"::::对应的s"+s.charAt(i));
            stringBuilder.append(s.charAt(i));
        }
        return stringBuilder;
    }

    public  void reversePartStr(StringBuilder sb,int left ,int right){
        while(left<right){
            char temp = sb.charAt(right);
            sb.setCharAt(right,sb.charAt(left));
            sb.setCharAt(left,temp);
            left++;
            right--;
        }
        
    }
    public  void reverseWholeStr(StringBuilder stringBuilder){
        reversePartStr(stringBuilder, 0, stringBuilder.length() - 1);
        System.out.println(stringBuilder);
    }

    public  void  reverAllWord(StringBuilder sb){
        int start = 0;
        int end = 1;
        int n = sb.length();
        while (start < n) {
            while (end < n && sb.charAt(end) != ' ') {
                end++;
            }
            reversePartStr(sb, start, end - 1);
            start = end + 1;
            end = start + 1;
        }
    }
}

1.3 重难点

二、 右旋字符串

题目链接:https://kamacoder.com/problempage.php?pid=1065
文章讲解:https://programmercarl.com/kamacoder/0055.%E5%8F%B3%E6%97%8B%E5%AD%97%E7%AC%A6%E4%B8%B2.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC
视频讲解:https://www.bilibili.com/video/BV12A4y1Z7LP

2.1 初见思路

1.翻转整个字符串
2.反转前一段字符串
3.反转后一段字符串

2.2 具体实现

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = Integer.parseInt(in.nextLine());
        String s = in.nextLine();

        int len = s.length();  //获取字符串长度
        char[] chars = s.toCharArray();
        reverseString(chars, 0, len - 1);  //反转整个字符串
        reverseString(chars, 0, n - 1);  //反转前一段字符串,此时的字符串首尾尾是0,n - 1
        reverseString(chars, n, len - 1);  //反转后一段字符串,此时的字符串首尾尾是n,len - 1
        
        System.out.println(chars);

    }

    public static void reverseString(char[] ch, int start, int end) {
        //异或法反转字符串,参照题目 344.反转字符串的解释
        while (start < end) {
            ch[start] ^= ch[end];
            ch[end] ^= ch[start];
            ch[start] ^= ch[end];
            start++;
            end--;
        }
    }
}

2.3 重难点

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1825848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PROSAIL模型前向模拟与植被参数遥感

原文链接&#xff1a;PROSAIL模型前向模拟与植被参数遥感 “绿水青山就是金山银山”的生态文明理念现已深入人心&#xff0c;从顶层设计到全面部署&#xff0c;生态文明建设进入举措最实、推进最快、力度最大、成效最好的时期。生态文明评价必须将生态系统健康作为基本内容&am…

什么是深拷贝;深拷贝和浅拷贝有什么区别;深拷贝和浅拷贝有哪些方法(详解)

目录 一、为什么要区别深拷贝和浅拷贝 二、浅拷贝 2.1、什么是浅拷贝 2.2、浅拷贝的方法 使用Object.assign() 使用展开运算符(...) 使用数组的slice()方法&#xff08;仅适用于数组&#xff09; 2.3、关于赋值运算符&#xff08;&#xff09; 三、深拷贝 3.1、什么是…

全网首发:教你如何直接用4090玩转最新开源的stablediffusion3.0

1.stablediffusion的概述&#xff1a; Stable Diffusion&#xff08;简称SD&#xff09;近期的动态确实不多&#xff0c;但最新的发展无疑令人瞩目。StableCascade、Playground V2.5和Stableforge虽然带来了一些更新&#xff0c;但它们在SD3面前似乎略显黯然。就在昨晚&#x…

基于SpringBoot+Vue高校自习室预约系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

C++初学者指南第一步---3.输入和输出(基础)

C初学者指南第一步—3.输入和输出&#xff08;基础&#xff09; 1. I/O Streams(I/O流) #include <iostream>int main () {int i;// read value into istd::cin >> i; // print value of istd::cout << i << \n; }数据的来源和目标 …

主观评测图生3D之 --- Era3D

文章目录 概述真人测试&#xff08;一般&#xff09;动物&#xff08;猫猫狗狗&#xff0c;不ok&#xff09;Q版真人&#xff08;惊艳&#xff09; 概述 抱抱脸可以直接测试 不过抱抱脸只能够生成多视图图像以及对应的法向图。 评测的话&#xff0c;拿三类我们比较关心的图片…

基于Java+MySQL+Tomcat+maven+JavaScript+Servlet的个人博客系统

目录 一、项目简介 二、页面效果 三、涉及的知识点 四、准备工作 1、创建maven项目&#xff0c;引入依赖 2、将前端代码粘贴到webapp目录下 3、设计数据库 4、编写数据库代码 以及 封装数据库连接操作 5、创建实体类 以及 封装对数据库的增删查改操作 五、功能实现 1…

传统边界安全设备的前世今生

光看不行得防御 只能抵御已知规则 识别病毒文件 识别方式是将数据包还原成文件&#xff0c;然后对文件进行病毒检测&#xff0c;检测方式就是以下三种 1、每一个文件都有一个独一无二的MD5值&#xff0c;把病毒文件的MD5值也进行记录&#xff0c;然后进行匹配 2、文件稍有变…

【EMC专题】ESD可视化设备对比宽地线和窄地线对ESD性能的影响

ESD可视化设备 ESD可视化设备是一种通过用非接触磁场探针自动扫描ESD电流来实现ESD电流可视化的设备。如下所示磁场探针可以测量电场强度,结合不同位置移动进行扫描,通过反复施加ESD并测量,得到PCB整体的电场强度数据。 实验解析 实验目的 利用ESD可视化装置观测施加于P…

CCAA质量管理【学习笔记】​​ 备考知识点笔记(四)

第四节 质量非数据资料分析的基础工具 1 关 联 图 2.1 概念 所谓关联图&#xff0c;就是对关系复杂而相互纠缠的问题&#xff0c;依据原因—结果或目的一手段等关系&#xff0c; 在逻辑上用箭头把各要素之间的因果关系连接起来&#xff0c;厘清复杂问题、整理语言文字资料…

软考初级网络管理员__Web网站的建立、管理维护以及网页制作单选题

1.在HTML 中&#xff0c;用于输出“>”符号应使用()。 gt \gt > %gt 2.浏览器本质上是一个&#xff08;&#xff09;。 连入Internet的TCP/IP程序 连入Internet的SNMP程序 浏览Web页面的服务器程序 浏览Web页面的客户程序 3.HTML 语言中&#xff0c;单选按钮的…

重塑IT审计的未来:数智化审计赋能平台的创新与实践

重塑IT审计的未来&#xff1a;数智化审计赋能平台的创新与实践 一、当前企业开展IT审计面临的挑战 随着信息技术的快速发展、企业数字化转型的持续深入&#xff0c;以及网络安全合规要求的不断增强&#xff0c;企业开展新型IT审计重要性越来越突出&#xff0c;但实施难度却越来…

微信删好友了聊天记录还能找回来吗?3种简单方法分享

微信删好友了聊天记录还能找回来吗&#xff1f;有时候删除好友后&#xff0c;发现需要找回与该好友的聊天记录。很多人会问&#xff1a;“微信删好友了聊天记录还能找回来吗&#xff1f;”本文将详细探讨这一问题&#xff0c;并提供多种可能的解决方案&#xff0c;帮助用户找回…

vue3医疗项目

配置src别名 打开viteconfig.js文件进行配置 import { defineConfig } from "vite"; import vue from "vitejs/plugin-vue"; // 引入node提供内置模块path&#xff1a;可以获取绝对路径 import path from "path";// https://vitejs.dev/config…

LIMS(实验室)信息管理系统源码:系统构架组成与功能实现

LIMS&#xff08;实验室&#xff09;信息管理系统源码&#xff1a;系统构架组成与功能实现 采用先进的计算机网络技术、数据库技术和标准化的实验室管理思想&#xff0c;组成一个全面、规范的管理体系&#xff0c;为实现分析数据网上调度、分析数据自动采集、快速分布、信息共…

大模型中的计算精度——FP32, FP16, bfp16之类的都是什么???

大模型中的计算精度——FP32, FP16, bfp16之类的都是什么&#xff1f;&#xff1f;&#xff1f; 这些精度是用来干嘛的&#xff1f;&#xff1f;混合精度 mixed precision training什么是混合精度&#xff1f;怎么转换呢&#xff1f; 为什么大语言模型通常使用FP32精度训练量化…

房地产房型展示信息小程序的内容是什么

地产业规模之大且品牌众多&#xff0c;还有房屋租赁、中介等&#xff0c;无论开发商公司还是衍生行业商家都需要多渠道宣传品牌和客户触达沟通转化&#xff0c;除了线下各种传单&#xff0c;线上也是主要场景&#xff0c;通过各种连接来达到相应目标。 也因此需符合平台生态开…

基于cortex-M3的rtos原理(上)

一、RTOS是什么&#xff1f; 下面是网上搜索到的定义&#xff1a; 看到系统一般会想到window&#xff0c;linux这种&#xff0c;但是rtos区别于它们的是占用资源小&#xff0c;实时性强&#xff0c;可以运行在资源受限的mcu上。一些soc厂商编写的sdk里带有添加“任务”的功能&…

SAP RFC 输入一张表(C# 使用 SapNwRfc 二)

SapNwRfc中的配置参数&#xff0c;记录日志关闭 Trace0&#xff0c;可以得到很好的性能。 有网友在问&#xff0c;SAP RFC返回多张表&#xff08;C# 使用 SapNwRfc 一&#xff09;中如何输入一张表的数据&#xff0c;正好博主也遇到了这个场景&#xff0c;今天做了一个DEMO&…

【Java】类与类的关系及其总结

类和类的关系 代码 总结&#xff1a; 【1】面向对象的思维&#xff1a;找参与者&#xff0c;找女孩类&#xff0c;找男孩类 【2】体会了什么叫方法的性擦&#xff0c;什么叫方法的实参&#xff1a; 具体传入的内容 实参&#xff1a; 【3】类和类可以产生关系&#xff1a; …