【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/
- 线程安全的Generic Dictionary
- Python 项目实践三(Web应用程序)第五篇
- CentOS 6.3下 安装 Mono 3.2 和Jexus 5.4
- Python 项目实践三(Web应用程序)第四篇
- 负载均衡环境下缓存处理
- WordPress Ajax 异步加载 自定义评论表情
- “分期网”域名fenqi.wang以16888元成交
- Python 项目实践三(Web应用程序) 第三篇
- Python 项目实践三(Web应用程序)第二篇
- 第一个IronPython程序(之一)
- mono-3.4.0 源码安装时出现的问题 [do-install] Error 2 [install-pcl-targets] Error 1 解决方法
- 安装 IronPython
- Python 项目实践三(Web应用程序)第一篇
- Centos 7.0 安装Mono 3.4 和 Jexus 5.6
- 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 数组属性和方法
- 听说Mysql你很豪横?-------------MySQL5.7主从同步
- 听说Mysql你很豪横?-------------MySQL5.7主从复制!读写分离!
- Vue兄弟组件传值
- Vue设置浏览器的标题title和图标icon
- VantUI封装自定义Tabbar路由跳转
- 听说Mysql你很豪横?-------------分分钟带你玩转SQL高级查询语句(常用查询,正则表达式,运算符)
- jQuery实现点击添加样式同胞移除样式
- 微信小程序生命周期
- 听说Mysql你很豪横?-------------分分钟带你玩转SQL高级查询语句(库函数,存储过程)
- 微信小程序下拉刷新上拉加载
- 微信小程序引用自定义组件
- 听说Mysql你很豪横?-------------搭建MySQL MHA实现数据库高可用( MySQL MHA概述、 搭建 MySQL MHA、 MySQL MHA 故障切换)
- jQuery点击click()事件
- 大点干!早点散----------深入剖析LVS负载均衡群集原理
- javascript中元素的scrollLeft和scrollTop属性说明