Leetcode-剑指offer05-替换空格
作者:互联网
题目地址(05. 替换空格)
https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/
题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
前置知识
- 暂无
思路
- 先开辟一个新的字符数组出来,对老的字符串进行遍历,如果碰到空格,则在新的字符数组里面插入**“%20”**,最后转化为字符串返回
关键点
- 因为Java中String类型不可变,所以需要开辟一个新的字符数组,所以空间复杂度为O(n),在遍历的过程中,需要两个个移动的指针,一个指向字符串,一个指向字符数组,最后还需要将字符数组转化成字符串输出
代码
- 语言支持:Java
Java Code:
class Solution {
public String replaceSpace(String s) {
//求字符串长度length
int len = s.length();
//构建一个新的字符数组
char[] ch = new char[len * 3];
//用来移动的指针
int size = 0;
for (int i = 0; i < len; i++) {
//得到字符串每个索引处的字符
char a = s.charAt(i);
if (a == ' ') {
ch[size++] = '%';
ch[size++] = '2';
ch[size++] = '0';
} else {
ch[size++] = a;
}
}
//将字符数组转化成字符串对象
String str = new String(ch, 0, size);
return str;
}
}
复杂度分析
令 n 为数组长度。
- 时间复杂度: O ( n ) O(n) O(n)
- 空间复杂度: O ( n ) O(n) O(n)
标签:空格,ch,String,字符,offer05,数组,字符串,Leetcode,size 来源: https://blog.csdn.net/weixin_48969816/article/details/114418675