替换空格反转字符串中的单词(LeetCode 剑指offer05 151)

news/2025/2/12 20:50:53/

题目

剑指 Offer 05. 替换空格 

思路

遍历,使用新的字符串来接原字符串,如为空格,则加入%20,否则加入原字符串。 

不过看了题解有另一种解法,由于空格转化为%20,设计到原字符存储空间的增加,因此先计算出需要增加的空间后。再使用双指针,从后往前遍历,这里画的动画比较好理解:

代码随想录

代码

public String replaceSpace(String s) {
//        String temp = "%20";StringBuilder s_new = new StringBuilder();for (int i = 0; i < s.length(); i++) {char temp = s.charAt(i);if(temp - ' ' == 0){//判断当前字符是否为空格s_new.append("%20");}else {s_new.append(temp);}}return s_new.toString();}public String replaceSpace_1(String s) {// 使用双指针 不使用额外的空间// 首先扩展原字符串的空间 一个空格就需要多2个位置int count = 0;// 用来存储扩展的空格StringBuilder s_append = new StringBuilder();for (int i = 0; i < s.length(); i++) {char temp = s.charAt(i);if(temp == ' '){//判断当前字符是否为空格 为空格则往s_append中加入两个空字符s_append.append("  ");}}// 左指针指向原字符串中最后一个字符int l = s.length()-1;// 将两个空间链接到一起s += s_append.toString();// 右指针指向新字符的最后一个位置int r = s.length()-1;// 将字符串改为char数组 方便使用下标对字符串内容进行修改char[] s_array = s.toCharArray();// 进入循环 退出条件为左指针遍历完左边所有字符while (l >= 0){// l指针所在位置为空格if(s_array[l] == ' '){s_array[r--] = '0';s_array[r--] = '2';s_array[r] = '%';}else {s_array[r] = s_array[l];}r --;l --;}return new String(s_array);
//        return s_array.toString();}

题目

151. 反转字符串中的单词 

思路

对字符串按空格进行分割,逆序遍历得到的字符串数组,将不为空格的(由于存在连续空格,按空格分割会保留一个空格)字符串添加到新字符串中,添加完一个字符串就加入一个空格,最后跳出循环后删掉最后一个空格即可。

代码 

public String reverseWords(String s) {String[] s_subs = s.split(" ");StringBuilder s_new = new StringBuilder();for (int i = s_subs.length - 1; i >= 0; i--) {
//            System.out.println(s_subs[i]);if(!s_subs[i].isEmpty()) {System.out.println(s_subs[i]);s_new.append(s_subs[i]);s_new.append(" ");}}// 删掉最后一个空格s_new.deleteCharAt(s_new.length() -1);return s_new.toString();}

http://www.ppmy.cn/news/862582.html

相关文章

android 安装在笔记本,笔记本电脑怎么装安卓系统_笔记本安装安卓教程-系统城...

现在电脑的功能越来越全面&#xff0c;我们甚至都可以在电脑上使用手机系统了。一些朋友就比较好奇&#xff0c;笔记本电脑该怎么安装安卓系统呢&#xff1f;其实很简单&#xff0c;接下来小编就给大家带来笔记本安装安卓系统的教程。 具体步骤如下&#xff1a; 1、首先大家需要…

联想笔记本fn键linux,Linux 系统下笔记本电脑的 Fn 键失效

luckykev1n&#xff1a;小弟我最近给自己的笔记本电脑(xps13)安装了 manjaro(linux)系统&#xff0c;安装完之后&#xff0c;发现 Fn 键失效了&#xff0c;不能愉快的通过 Fn 键快捷调节音量和键盘背光灯&#xff0c;有点苦恼。 各位大佬有遇到过这种情况吗&#xff0c;怎么解决…

笔记本电脑 F1 至 F12 是功能键,怎么转换成普通键

前言 最近要用到电脑的 F 键发现如果只按 F 键不会起到 F 键的作用&#xff0c;而是控制声音亮度之类的功能&#xff0c;上网搜索教程&#xff0c;发现一部分教程是进入电脑的 BIOS 中设置 Config&#xff0c;还有一部分是取消 F 键的功能变回普通键&#xff0c;后来发现下面这…

笔记本电脑f11功能键_笔记本电脑按键功能详细图解_笔记本电脑键盘功能详细介绍是什么-win7之家...

对于一些刚接触笔记本电脑的小伙伴们来说&#xff0c;熟知电脑键盘上各个按键的功能可以帮助我们日常使用电脑的时候更加安全&#xff0c;那么笔记本电脑键盘功能有哪些呢&#xff1f;针对这个问题&#xff0c;小编给大家整理了笔记本电脑按键功能详细图解&#xff0c;有一样需…

数据库的备份还原,视图以及索引

一、数据库备份还原 1、创建相关数据库以及数据表 /***************************样例表***************************/ CREATE DATABASE booksDB; use booksDB; CREATE TABLE books ( bk_id INT NOT NULL PRIMARY KEY, bk_title VARCHAR(50) NOT NULL…

Langchain-ChatGLM配置文件参数测试

1 已知可能影响对话效果的参数&#xff08;位于configs/model_config.py文件&#xff09;&#xff1a; # 文本分句长度 SENTENCE_SIZE 100# 匹配后单段上下文长度 CHUNK_SIZE 250 # 传入LLM的历史记录长度 LLM_HISTORY_LEN 3 # 知识库检索时返回的匹配内容条数 VECTO…

武汉凯迪正大KD305系列智能数字绝缘电阻测试仪

一、概述 KD305系列智能数字绝缘电阻测试仪采用嵌入式工业单片机实时操作系统&#xff0c;数字模拟指针与数字段码显示结合&#xff0c;该系列表具有多种电压输出等级&#xff08;500V、1000V、2500V、5000V、10000V&#xff09;、容量大、抗干扰强、模拟指针与数字同步显示、交…

豪驰智能刘传富:聚焦新能源商用车赛道,橙仕智能助力低碳绿色未来

绿色低碳是国家未来发展方向&#xff0c;新能源汽车作为实现国家双碳战略的关键环节之一&#xff0c;机遇与挑战并存。进入新能源时代&#xff0c;我国新能源车市场逐渐从野蛮生长转型为深耕细作&#xff0c;产业秩序得以重塑&#xff0c;行业高质量发展离不开企业的发展壮大&a…