第五期:字符串的一些有意思的操作

news2024/11/8 23:53:40

文章目录

      • 1. 替换空格
      • 2. 字符串的左旋转
      • 3. 答案代码
        • 3.1 替换空格
        • 3.2 字符串的左旋转

第五期
PS:每道题解题方法不唯一,欢迎讨论!每道题后都有解析帮助你分析做题,答案在最下面,关注博主每天持续更新。

1. 替换空格

题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
示例2:
输入:s = “hello world.”
输出:s = “hello%20world.”
解析:
在Java中我们要知道字符串的本身是没办法直接改变的,所有只能在一个新的字符串上面实现。
所有我们就有了思路,创建一个新的字符串,遍历老的字符串,当是空格的时候新的字符串加上个%20,不是空格直接加上这个字符,最后遍历完成,得到的字符串便是我们想要的结果。(方法一)
注意:

  • 创建新的字符串不能创建String类型,要创建StringBuilder ,因为String在相加的时候一直创建新的字符串,消耗内存大。
    -也可以使用库方法replace(),但是这样便失去了刷题的意义,而且在面试的时候,面试官也不希望看到这样的代码。(方法二)

2. 字符串的左旋转

题目描述
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例1:
输入: s = “abcdefg”, k = 2
输出: “cdefgab”
示例2:
输入: s = “lrloseumgh”, k = 6
输出: “umghlrlose”
解析:
这道题有个取巧的方法,就是应用切片函数,进行字符串的切片,调用substring()库方法。(方法一)。
面试的时候这种方法可能不让用,所以我们可以用另一种方法。
列表遍历拼接,创建一个StringBuilder的字符串,依次拼接k + 1到末尾字符,然后再拼接首位字符到k,最后返回字符串。(方法二)
还可以通过旋转字符的方式来做,但是比较麻烦,我们先把字符串转为字符数组,然后分别旋转0 ~ k-1,k ~ arr.length - 1坐标元素,最后再旋转整个数组,把这个数组再转化为字符串,我们便得到了我们想要的结果。(方法三)

3. 答案代码

3.1 替换空格

	//方法一
    public String replaceSpace(String s) {
        StringBuilder stringbuilder = new StringBuilder();
        int len = s.length();
        for(int i = 0; i < len; i++){
            char ch = s.charAt(i);
            if(ch == ' '){
                stringbuilder.append("%20");
            }else{
                stringbuilder.append(ch);
            }
        }
        return stringbuilder.toString();
    }
    
    //方法二 
	public String replaceSpace(String s) {
    	return s.replace(" ", "%20");
	}

3.2 字符串的左旋转

	//方法一
    public String reverseLeftWords(String s, int n) {
        return s.substring(n) + s.substring(0, n); 
    }
    
    //方法二
    public String reverseLeftWords(String s, int n) {
        StringBuilder res = new StringBuilder();
        for(int i = n; i < s.length(); i++){
            res.append(s.charAt(i));
        }
        for(int i = 0; i < n; i++){
            res.append(s.charAt(i));
        }    
        return res.toString();
    }
       
    //方法三
    public String reverseLeftWords(String s, int n) {
        char[] arr = s.toCharArray();
        reverse(arr, 0, n - 1);
        reverse(arr, n, arr.length - 1);
        reverse(arr, 0, arr.length - 1);
        s = new String(arr);
        return s;
    }
    public void reverse(char[] arr, int left, int right){
        while(left < right){
            char tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
            left++;
            right--;
        }
    }

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

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

相关文章

Microsoft SQL Server 2019 详细安装教程

文章目录 系列文章目录前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一、SqlServer2019安装步骤 双击运行好的setup.exe 选择安装&#xff0c;点击第一个全新独立安装 默认点击下一步 勾选介绍&#xff0c;点击下一步 点击下一步 点击下一步 勾选需要…

容器镜像分析工具dive

概述 dive是一个容器镜像分析工具&#xff0c;可以直观的看到容器每一层变动了哪些文件&#xff0c;每一层占用的磁盘空间&#xff0c;这样也就可以看到镜像的历史构建过程&#xff1b;同时也可以看到镜像的磁盘空间使用率&#xff0c;面对特别大的镜像文件是&#xff0c;可以…

问道手游-0基础架设教程

前言 本次教程使用的是问道魔改版的一个服务端、问道传奇、里面地图玩法基本与传奇类似 准备工具 1、Windows系统服务器一台 2、问道传奇服务端 开始架设 1、把准备好的问道传奇服务端解压到服务器D盘根目录记住必须得是根目录 不在根目录会导致快捷方式失效&#xff08;服务器…

ChatGPT新突破:打造自己的智能机器人控制系统

&#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是Zeeland&#xff0c;全栈领域优质创作者。&#x1f4dd; CSDN主页&#xff1a;Zeeland&#x1f525;&#x1f4e3; 我的博客&#xff1a;Zeeland&#x1f4da; Github主页: Undertone0809 (Zeeland) (github.com)&…

【ArcGIS Pro二次开发】(35):三调三大类面积统计

根据《第三次全国国土调查技术规程》&#xff0c;三调中的地类可以归纳为土地管理法中规定的三大类用地。 我们可以在三调中直接统计出这三大类用地的面积。主要方法是在ArcGIS中将这三大类对应的用地提取出来&#xff0c;再进行统计。不过每次都要在复制一长串的筛选语句&…

Android Small框架增量升级方案

篇首语&#xff1a;本文由小常识网(cha138.com)小编为大家整理&#xff0c;主要介绍了Android Small框架增量升级方案相关的知识&#xff0c;希望对你有一定的参考价值。 背景 随着业务的发展&#xff0c;安装包的体积也在不断的增大&#xff0c;这时候&#xff0c;如果要版本…

vscode下,camke构建QT项目成功后,Cmake/Launch无法出现程序窗口的原因和解决方式

由于可执行程序根目录下没有 qt 相关 dll 文件&#xff0c;直接运行会出现一闪而过的问题&#xff0c;所以需要进入 build目录&#xff0c;终端运行类似如下指令&#xff1a; D:\QT\5.15.2\mingw81_64\bin\windeployqt.exe .\test001.exe 注意&#xff1a;环境变量不能配置ms…

计算机视觉特征图可视化与注意力图可视化(持续更新)

1.YOLOv5 特征图可视化 可视化代码&#xff1a; def feature_visualization(x, module_type, stage, n2, save_dirPath(runs/detect/exp)):"""x: Features to be visualizedmodule_type: Module typestage: Module stage within mod…

前端工程化-NPM

前端工程化-NPM 1&#xff0e;什么是NPMNPM安装基本使用 1&#xff0e;什么是NPM NPM代表npmjs.org这个网站&#xff0c;这个站点存储了很多Node.js的第三方功能包。 NPM的全称是Node Package Manager&#xff0c;它是一个Node.js包管理和分发工具&#xff0c;已经成为非官方的…

DR模式 LVS负载均衡群集部署

DR模式 LVS负载均衡群集部署 一、LVS-DR工作原理1.数据包流向分析2.LVS-DR中的ARP问题3.LVS-DR模式的特点 二、LVS-DR部署1.部署NFS服务器2.配置2台节点服务器3.部署调度服务器 一、LVS-DR工作原理 1.数据包流向分析 &#xff08;1&#xff09;客户端发送请求到 Director Serv…

Spring Cloud Ribbon源码解析,Ribbon为什么可以实现负载均衡,为什么可以用服务名调用

文章目录 一、Ribbon概述1、Ribbon简单使用&#xff08;1&#xff09;引包&#xff08;2&#xff09;使用方式一&#xff1a;RestTemplateLoadBalanced&#xff08;3&#xff09;使用方式二&#xff1a;LoadBalancerClient 2、问题来了 二、前置知识回顾1、复习Qualifier的作用…

时序逻辑与组合逻辑

目录 一、概念 二、区别 一、概念 数字电路按照逻辑功能一般可以分为组合逻辑和时序逻辑。组合逻辑电路是指不含有任何存储器件&#xff08;一般指寄存器&#xff09;的电路&#xff0c;它的输出只和当前电路的输入有关&#xff1b;时序逻辑电路含有存储器件&#xff0c;可以…

[PyTorch][chapter 38][ResNet ]

前言&#xff1a; 论文地址&#xff1a; https://arxiv.org/pdf/1512.03385.pdf 残差网络是由来自Microsoft Research的4位学者提出的卷积神经网络&#xff0c;在2015年的ImageNet大规模视觉识别竞赛&#xff08;ImageNet Large Scale Visual Recognition Challenge, ILSVRC&am…

[ATL/WTL]_[初级]_[如何获取ListView点击的单元格区域]

场景 在做Win32/WTL开发时&#xff0c;CListViewCtrl控件是常用的表格控件。有时候自绘listview时&#xff0c;需要在单元格上绘制小图标&#xff0c;并且小图标能响应鼠标点击的操作。 那么如何实现判断是否点击了小图标呢&#xff1f; 说明 要响应点击单元格上的小图标&…

MongoDB笔记

mongoDB基础知识 MongoDB的三个核心特性&#xff1a;灵活设计&#xff08;No Schema&#xff09;、高可用和分布式&#xff08;可平行扩展&#xff09;&#xff0c;另外MongoDB自带数据压缩功能&#xff0c;使得同样的数据存储所需的资源更少。 No Schema&#xff08;BJSON&a…

NeRF-Diffusion系列文章阅读

文章目录 前置知识《Latent-NeRF for Shape-Guided Generation of 3D Shapes and Textures》【CVPR23】《NeRDi: Single-View NeRF Synthesis with Language-Guided Diffusion as General Image Priors》【CVPR23】《SparseFusion: Distilling View-conditioned Diffusion for …

【系统找不到D盘指定驱动设备之解决方法】

文章目录 1.原因2.解决经过3.最终解决办法 1.原因 今天在搞课设&#xff0c;突然之间电脑一顿卡&#xff0c;然后整个电脑屏幕空白&#xff0c;D盘以及所有的安装软件都不见了。点击屏幕出现提示系统找不到指定驱动设备等等提示&#xff0c;查看此电脑发现D盘神奇的消失了。 …

Kafka面试题01

1、kafka有哪些特点 高吞吐&#xff0c;低延迟 可以热扩展 并发度高 具有容错性&#xff08;即使挂的只剩下一台也可以正常工作&#xff09; 可靠性高2、请简述你在那些场景下会选择kafka&#xff1f;kafka的应用 日志收集&#xff1a; 一个公司可以用kafka收集各种服务的log…

B站、抖音上那些4K、60帧视频是如何修复的?

如何把一个不清晰的视频变成高清的视频&#xff1f;今天就来教大家视频画质修复把720p的渣画质变成4K超清画质。 相信对于电影和后期爱好者来说&#xff0c;糊成马赛克的画质一定劝退了无数人&#xff0c;那不妨试试这个 牛学长视频修复工具 牛学长视频修复工具通过高级的AI…

Java网络开发(Tomcat)—— 登陆 和 注册功能 的实现 从html 到 jsp 迭代升级 session保存登陆信息

目录 引出登陆功能---从html到jsp1.登陆--用post请求2.用html文件的form表单登陆&#xff08;1&#xff09;index.html页面&#xff08;2&#xff09;login.html登陆的页面&#xff08;3&#xff09;LoginServlet.java处理输入信息的代码&#xff08;4&#xff09;登陆成功&…