算法——剑指 Offer 05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例:
输入:s = "We are happy."
输出:"We%20are%20happy."
package com.xiao.algorithms;
/**
* 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
* 示例:
* 输入:s = "We are happy."
* 输出:"We%20are%20happy."
*/
public class Offer05_Replace_the_blank_space {
public static String replaceSpace(String s){
StringBuilder res = new StringBuilder();
for(Character c : s.toCharArray()){
if(c == ' ') {
res.append("%20");
} else{
res.append(c);
}
}
return res.toString();
}
public static void main(String[] args) {
String s = "We are happy!";
String s1 = replaceSpace(s);
System.out.println(s1);
StringBuilder str1 = new StringBuilder();
str1.append("我");
str1.append("拿高薪");
System.out.println(str1);
//将StringBuilder实例转化为字符串
String s2 = str1.toString();
//判断数据类型
System.out.println(String.class.isInstance(s)); //true;
System.out.println(String.class.isInstance(str1)); //false;
System.out.println(String.class.isInstance(s2)); //false;
}
}
时间复杂度 O(N)O(N) : 遍历使用 O(N)O(N) ,每轮添加(修改)字符操作使用 O(1)O(1) ;
空间复杂度 O(N)O(N) : Python 新建的 list 和 Java 新建的 StringBuilder 都使用了线性大小的额外空间。
拓展:
1、StringBuilder: 一个可变的字符序列。(https://www.runoob.com/manual/jdk11api/java.base/java/lang/StringBuilder.html)
在做字符串拼接的时候,因为字符串是引用类型,新的字符串是会再内存中创建的,所以用+号拼接字符串是比较耗效率的. StringBuilder类就可以提高性能。
StringBuilder上的主要操作是append和insert方法
append() //添加新字符串到StringBuilder实例的末尾
insert()
toString() //将StringBuilder实例转化为字符串
StringBuilder实例不适合多线程使用。 如果需要这样的同步,则建议使用StringBuffer 。
2、toCharArray(): 该方法的作用是返回一个字符数组,该字符数组中存放了当前字符串中的所有字符
3、Character: Character类在对象中包装基本类型char的值。 类型为Character的对象包含单个字段,其类型为char 。
Character是char的包装类,就像Integer和int ,以及Long和long一样。
Character是char的包装类,注意它是一个类,提供了很多方法的。
包装类和基本类型可以自动转换,这是jdk1.5(5.0)的新特性,叫做 自动封箱 和 自动解封
char ch='a';
Character ch1=ch;//自动封箱
Character c=new Character(a);
char c1=c;//自动解封
int t=10;
Integer t1=t;//自动封箱
Integer t=new Integer(10);
int t1=t//自动解封
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律