【LeetCode】把字符串 s 中的每个空格替换成““%20””day02
时间:2022-07-23
本文章向大家介绍【LeetCode】把字符串 s 中的每个空格替换成““%20””day02,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
解答过程
- 当我看到这道题的第一个思路是:将这个String按空格Split开。然后重新拼接的时候加上需要替换的字符串。(我也不知道这是什么脑回路); 最后还是一道错题。
/**
* 第一次的解答。
* 为多个孔空字符串就会出现err
*
* @param s
* @return
*/
public String replaceSpace(String s) {
if (s == null || s.equals("")) {
return "";
}
StringBuffer resultStr = new StringBuffer("");
String[] strs = s.split(" ");
for (int i = 0; i < strs.length; i++) {
resultStr.append(strs[i]);
// 防止最后一个字符里面添加需要替换的字符
if (i != strs.length - 1) {
resultStr.append("%20");
}
}
return resultStr.toString();
}
- 第二次 我看答案了,String 类里有一个工具方法,我靠!!!!! str.replace(" “,”%20"),好吧。
- 其中得复杂度是下面是replace的源码,我们可大概看看也就是O(n)的时间复杂度。
str.replace(" ", "%20");
public String replaceAll(String replacement) {
reset();
boolean result = find();
if (result) {
StringBuffer sb = new StringBuffer();
do {
appendReplacement(sb, replacement);
result = find();
} while (result);
appendTail(sb);
return sb.toString();
}
return text.toString();
}
- 第三次。再仔细想想,String的底层是char[],那我们把它变为一个char数组,那处理起来不就So easy!空格他也是一个char. 上代码:
/**
* 第二次
* 首先我们得明确Sting的里面也就是一个char类型数组时间复杂度是O(n)
*
*/
public static String replaceSpaceV2(String s) {
if (s.length() == 0) {
return "";
}
//此处为什么使用StringBuffer呢?因为他比String占用的内存少
StringBuffer resultStr = new StringBuffer("");
//需要知道这个toCharArray这个方法。
char[] c = s.toCharArray();
for (int i = 0; i < s.length(); i++) {
//这块由于我不知道如何判断char类型的空格等于才这样写,浪费了空间和时间
// char c1 = c[i];
// String str = c1 + "";
// if (" ".equals(str)) {
//不经常使用char类型,看看下面的操作 ' ' 和" "得区别是什么?淋漓尽致的被体现了。
if(' ' == char[i]){
resultStr.append("%20");
} else {
resultStr.append(s.charAt(i));
}
}
return resultStr.toString();
}
总结
- 这个题真的是需要注意的就是你得知道String的底层数据结构是char[]
- str.charArray()将String 转化为char[],如果你知道replace()这个方法,在没有题目限制的情况下,那也是可以使用的
- 还有就是char的空格之间的比较。使用单引号和char比较,双引号和String比较。
参考
原题地址:https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/
- 使用CSS制作文字环绕图片效果(文字内容包含<li>标签)
- ClojureScript魔法堂:搭建开发环境
- PHP error_reporting() 错误控制函数功能详解
- centos上安装elasticsearch 5.5.1 遇到的各种坑
- 概率论08 随机变量的函数
- @Transactional导致AbstractRoutingDataSource动态数据源无法切换的解决办法
- 防F12扒代码:按下F12关闭当前页面
- TCP/IP(七)之玩转HTTP协议
- Android的历史与花边
- 意译:《JVM Internals》
- 来玩Play框架07 静态文件
- IDEA的svn
- 异常处理升级版
- 机器学习笔记(1):线性回归
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C# 获取txt文件邮箱号码并去重复
- C#中Enum用法小结
- Python爬虫基础总结
- C# TASK使用实例
- [打造自己的监控系统之执行Oracle命令]获取Oracle执行次数等于一的语句(硬解析状况)
- [打造自己的监控系统之执行Oracle命令]检查未绑定变量的语句(硬解析状况)
- httpclient使用HTTP代理实践
- 使用Python利用微信企业号发送报警信息
- C# Task.Delay() 和 Thread.Sleep() 区别
- Csharp实例:武汉智能安检闸机数据接收和解析
- [周末往期回顾]Oracle基本参数(LOG_ARCHIVE_DEST_n)
- [周末往期回顾]Oracle基本参数(SGA_TARGET)
- C#如何释放已经加载的图片
- 笔记本内置摄像头视频播放和存储
- [Data Guard全解析]5.Data Guard及ADG日常运维操作