剑指offer算法 java实现 替换字符串空格

剑指offer——替换空格 经典面试题——替换空格 阅读详情

剑指offer算法 java实现

面试题:替换空格(假设在原来的字符串上替换,并且保证输入的字符串后面有足够多的内存空间)

题目:请实现一个函数,把字符串中的每个空格替换成“20%”。例如输入“hellow new world!”,则输出“hellow02%new02%world!”。

原因:在网络编程中,如果URL参数中含有特殊字符,如:空格、“#”等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器识别的字符。转换规则是在“%”后面跟上ASCII码的两位十六进制的表。比如:空格的ASCII玛是32,即十六进制的0x20,因此空格被替换成“%20”。

时间复杂度为o(n2)不足以拿到offer

考虑时间复杂度为O(n)的解法,搞定offer就靠它了

算法描述如下:

从字符串的后面开始复制和替换,首先准备两个指针,p1和p2,p1指向原始字符串的末尾,p2指向替换后字符串的末尾,接下来,向前移动指针p1,逐个把它指向的字符复制到p2,碰到一个空格之后,把p1向前移动1格,在p2处插入字符串“20%”,由于“20%”长度为3,同时也要把p2向前移动3格。直到p1=p2,表明所有空格都已经替换完毕。

具体算法实现如下:

package com.offer.www;

public class ReplaceBlank {
	private static String testString = "hellow new world!";

	// 计算字符串中包含的空格个数
	public static int getBlankNum(String testString) {
		int count = 0;
		for (int i = 0; i < testString.length(); i++) {
			String tempString = String.valueOf(testString.charAt(i));
			if (tempString.equals(" ")) {
				count++;
			}
		}
		return count;
	}

	// 打印char[]数组
	public static void printArray(char[] testArray) {
		for (char i : testArray) {
			System.out.print(i);
		}
		System.out.println();
	}

	// 将字符串空格转换为20%
	public static void replaceAllBlank(String testString) {

		if (testString == null || testString.length() <= 0) {
			return;
		}
		// 字符数组初始长度
		int originalLength = testString.length();
		// 字符数组增加长度后
		int newLength = getBlankNum(testString) * 2
				+ originalLength;
		char[] tempArray = new char[newLength];
		System.arraycopy(testString.toCharArray(), 0, tempArray, 0, testString
				.toCharArray().length);
		int indexofOriginal = originalLength - 1;
		int indexofNew = newLength - 1;
		System.out.println("未替换空格时的字符串:");
		printArray(tempArray);
		while (indexofOriginal >= 0 && indexofOriginal != indexofNew) {
			if (tempArray[indexofOriginal] == ' ') {
				tempArray[indexofNew--] = '%';
				tempArray[indexofNew--] = '2';
				tempArray[indexofNew--] = '0';
			} else {
				tempArray[indexofNew--] = tempArray[indexofOriginal];
			}
			indexofOriginal--;
		}
		System.out.println("替换空格后的字符串:");
		printArray(tempArray);

	}

	public static void main(String[] args) {
		replaceAllBlank(testString);
	}
}

算法输出如下:

未替换空格时的字符串:hellow new world!

替换空格后的字符串:hellow02%new02%world!

hpm6750evk2开发板(一)菜鸟入门 hpm6750与我们平时常用的stm单片机在开发环境和开发方法上有很大的区别,所以上手还是需要花一点时间的,拿到板子先不要急着上电调试,我们先找资料学习一下了,免得多走冤枉路,以下是我整理的一些学习资源,包括开发板使用手册、芯片SDK、开发工具、视频资料等,建议先把使用手册和学习视频先看了,再取搭建环境测试。最近刚入手一块hpm6750evk2开发板,花了几天时间学习,算是菜鸟入门了,今天分享一下学习过程。看完资料后,把开发工具安装上,下一篇文章我们分享一下调试工程的过程和遇到的问题。 阅读详情

相关推荐

一步步教你获取ADNI影像数据:从搜索到下载全流程解析

本文详细解析了从ADNI数据库获取阿尔茨海默病影像数据的全流程,包括账号注册、数据检索技巧、高效下载策略及常见问题解决方案。特别介绍了高级搜索的黄金组合和智能数据集管理方法,帮助研究者快速获取T1加权MRI、PET等多模态影像数据,提升科研效率。

weixin_29061465的博客 320

【java】替换空格

【java】替换空格 请实现一个函数,将一个字符串s中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 数据范围: \0≤len(s)≤1000。保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。...

qq_42250887的博客 2952

全志T113 Tina5.0开发:(零)源码下载&修改调试串口

本文章主要作为自己的笔记,如有错误欢迎指出$ repo start product-da-t113-tina-stable --all # 全部下载完成之后,创建分支运行过程可能会出现版本问题;rm -rf .repo //先删除试试( 我安装的是3.6版本)

u014428915的博客 1164

Java中去除字符串中空格的方法

1、方法分类 str.trim(); //去掉首尾空格 str.replace(" “,”"); //去除所有空格,包括首尾、中间 str.replaceAll(" ", “”); //去掉所有空格,包括首尾、中间 str.replaceAll(" +",""); //去掉所有空格,包括首尾、中间 str.replaceAll("\s*", “”); //可以替换大部分空白字符, 不限于空格 ...

Smile yourlife 4859

基于表面肌电信号sEMG的手势识别——以Ninapro DB1数据集使用CNN网络识别为例

本文实验采用公共数据集Ninapro。该数据集数据量大,采集的动作丰富,每个单位数据集里面包括表面肌电信号、加速度计、手部运动学和动态数据等,记录了67名完整受试者和11名进行了至少50 次手部运动的截肢者的数据。NinaproDB1数据集包括27名完整的受试者(7 名女性和20名男性,其中2个左手和25 个右手) 的肌电信号。信号采集频率为100Hz。

树下一朵云的博客 2295

基于dify平台批量分析excel格式信息

如何以表格形式批量输入一些信息,然后让大模型以对话应用形式逐条进行推理分析?请逐行分析以下数据,给出推理结果:{{input}}这里提供一个分步解决方案,结合。

knightissocool的博客 8008

剑指offer系列——剑指 Offer 05. 替换空格(C/C++/Java)

⭐️前面的话⭐️ 大家好!博主开辟了一个新的专栏——剑指offer,我要开始刷题了!这个专栏会介绍《剑指offer》书上所有的面试编程题。并且会分享一些我的刷题心得。由于博主水平有限,如有错误,欢迎指正,如果有更好的解题思路和算法可以分享给博主哦!一起加油!一起努力! 剑指 Offer 05. 替换空格

未见花闻的博客 1898

使用mne包来对脑电数据进行预处理(一)

MNE(MNE-Python)是一个用于处理脑电(EEG)、磁图(MEG)和其他神经科学数据的Python库。它提供了丰富的功能,包括数据加载、预处理、分析和可视化,旨在帮助研究人员和神经科学家更轻松地进行脑电数据的处理和分析。在本文中,我们使用mne来对不同的格式的脑电数据集进行数据读取。

m0_71596228的博客 4303

Java——替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

m0_60867520的博客 560

使用LSTM进行多任务学习:共享模型预测多个目标

多任务学习是一种机器学习方法,旨在通过同时学习多个相关任务来提高模型的学习效率和泛化能力。MTL的核心思想是共享模型的参数,从而在不同任务之间捕捉到共享的特征。长短期记忆网络(LSTM)是循环神经网络(RNN)的一种改进版本,专门用于解决传统RNN在处理长序列时出现的梯度消失和梯度爆炸问题。LSTM通过引入多个门控机制(输入门、遗忘门和输出门)来控制信息的流动。本文详细探讨了如何使用LSTM进行多任务学习。我们介绍了多任务学习的理论基础、LSTM的特点,以及如何构建和训练一个多任务LSTM模型。

斌擎科技 1151

k8s上分离集群seatunnel部署(生产推荐)

k8s上分离集群seatunnel部署(生产推荐)

寂夜了无痕的博客 883

剑指offer的题解——5.替换空格

剑指offer的题解——5.替换空格 题目: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 最直观的做法是从头扫到尾,每次碰到空格时进行替换。于是把1个字符替换成3个字符,就必须要把空格后面的所有字符都后移2字节。假设字符串长度为n,对每个空格字符需要移动后面O(n)个字符,因此对于含...

zurh500的博客 218

APP爬虫:Airtest的使用和爬取实战详解

Airtest是一个跨平台的自动化测试工具,主要用于移动应用和游戏的UI自动化测试。它支持图像识别、触摸操作、文本输入等功能,能够模拟真实用户的操作行为。此外,Airtest还具备强大的日志记录和报告生成功能,方便开发者进行调试和分析。图像识别:通过截图匹配元素,无需依赖 UI 层次结构。跨平台支持:支持 Android、iOS 和 Windows 应用。简单易用:提供 IDE 和脚本录制功能,降低使用门槛。

数据知道的博客 9618

剑指offer—5.替换空格——分析及代码(Java)

剑指offer——5.替换空格——分析及代码[Java]一、题目二、分析及代码1.依次查找替换(1)思路(2)代码(3)结果三、其他 一、题目 请实现一个函数,将一个字符串中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 二、分析及代码 1.依次查找替换 (1)思路 本题思路清晰直观,直接遍历字符串,对其中空格进行...

江南土豆的博客 186

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

剑指Offer面试题4——替换空格

复习算法,15天内刷完剑指Offer 那么多学技术的都可以成功,凭什么我不行? 1、题目 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 2、思路 思路1: 利用SpringBuilder,因为Spring是不可变的。从前往后遍历字符串,遇到空格就将后面所有...

qq_42107430的博客 245

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

二维数组的查询、替换空格、从尾到头访问单链表

啊啊啊啊,很久没有写代码了,打算每天都刷一下牛客网上面《剑指offer》里面的题,每天一题,分别用Java和Js代码写,本来想写算法,用c语言写,但是发现这个里面可以c++,没有c,那就先写java和js代码,后面再写C++.三个题写一个博客。这个学期没怎么学习,导致很多基础东西(函数等等)用法都忘记了 一、在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都...

sunandstarws的博客 223

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

剑指Offer_05_替换空格

package 二刷; /** * https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/ * * @author Qitong!! * @Date 2020/6/30 */ public class 剑指Offer_05_替换空格 { //调用系统自带的函数 时间特别长!不好 public String replaceSpace(String s) { if (s == null) return null;

qitong啊的博客 551

剑指offer-替换空格

剑指offer中的第二题替换空格的写法,以下给出Python、C++的写法。 Python写法 运行时长约30 ms class Solution: # s 源字符串 def replaceSpace(self, s): newstr=s.replace(' ','%20') return newstr C++写法 class Solution { ...

weixin_34241036的博客 85

【面试题】替换空格(多种解法、Java、Python实现)

题目描述 在 Python 和 Java 等语言中,字符串都被设计成不可变的类型,即无法直接在原来的字符串上做替换,需要新建一个空字符串实现。 时间复杂度 O(n): 遍历字符数组需要 O(n),每轮添加(修改)字符操作需要 O(1) ; 空间复杂度 O(n) : Python 新建的 list 和 Java 新建的 StringBuilder 都使用了线性大小的额外空间。 Python class Solution(object): def replaceSpace(self, s):

Mr_SCX的博客 893

代码随想录算法训练营第八天|344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

代码随想录算法训练营第八天|344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串

2303_76761642的博客 167

剑指offer第二题替换空格 不用replace

package fenshujs; import java.util.Scanner; public class Janzhioffer { /*  * 剑指offer第二题  替换空格  */ public static void main(String[] args) { // TODO Auto-generated method stub        Sca

K3140911026的博客 446

剑指offer(一) 二维数组中的查找+替换空格+从尾到头打印链表

记录并复习一下剑指offer的部分题型~ 文章目录二维数组中的查找替换空格从尾到头打印链表 二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 从题目中可以看出是通过一个从左到右递增,从上到下递增的二维数组中寻找一个整数。 所...

LinJy 225

剑指offer2,3

剑指offer 2替换空格 实现一个函数,将一个字符串中的每一个空格替换成“%20”;例,当字符串为“We Are Happy”,则经过替换之后的字符串为“We%20Are%20Happy” //将字符串的每个空格替换成 %20 例:将“We Are Happy”替换成“We%20Are%20Happy” public class Offer2 { public static void main(String[] args) { String stringBuffer = repl

zzz_king的博客 120

剑指Offer(java)部分题答案

剑指Offer部分题解 新手上路,请多指教 二维数字中的查找: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 public class Solution { public boolean Find(int target, int [][] ar...

xiaoxiannv601的博客 259

剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格 难度简单 请实现一个函数,把字符串s中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 class Solution { public String replaceSpace(String s) { StringBuilder stringBuilder=new ...

时代我西的博客 69
上一篇: 剑指offer算法 java实现 二维数组中的查找
下一篇: 用Eclipse tomcat新建一个JSP页面(一)
黄玮鹏
博客等级 码龄17年 262粉丝 20原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值