请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

方法一:
假设字符串长度为n,因为不知道字符串有多少个空格,假设字符串都是空格,加入三个字符%20,就需要3n个空间
定义两个指针,第一个指针指向原始字符串的第一个字符i,第二个指针指向新开辟静态数组的索引位置j。
如果i指向不是空格,则将i处的值给j,否则j处赋值%20。
但这个方法会浪费大量空间解决方法:找出空格数确定数组大小看下个方法
class Solution {
public String replaceSpace(String s) {
// 获取字符串长度
int n = s.length();
// 定义一个原字符串3倍长度的数组,不知道字符串会有多少个空格,假设都是空格的大小
char[] arr = new char[3*n];
int j=0;
for(int i=0;i<n;i++){
// 返回指定索引处的char值
char c = s.charAt(i);
// 如果是空格计入%20
if(c == ' '){
arr[j++]='%';
arr[j++]='2';
arr[j++]='0';
}else{
// 如果不是,将获取s的值给c后直接写入arr
arr[j++]=c;
}
}
// 把新的字符数组包装成String。
return new String(arr);
}
}

方法二:
遍历字符串确定空格数
根据空格数确定数组长度,因为没找到一个空格,要增加三个字符所以每找到一个空格数组大小就要扩大两个单位
定义两个指针,第一个指针指向原始字符串的第一个字符i,第二个指针指向新开辟静态数组的索引位置j。
如果i指向不是空格,则将i处的值给j,否则j处赋值%20。
class Solution {
public String replaceSpace(String s) {
int n= s.length();
int count =0;
// 遍历字符串找出有几个空格
// ToCharArray,将字符串对象中的字符转换为一个字符数组
for(char c: s.toCharArray()) {
if(c==' '){
count++;
}
}
// 根据空格数确定数组大小
char arr[] = new char[n+2*count];
int j =0;
for(int i =0;i<n;i++){
// 返回指定索引处的char值
char a = s.charAt(i);
if(a ==' '){
arr[j++]='%';
arr[j++]='2';
arr[j++]='0';
}else{
arr[j++]=a;
}
}
return new String (arr);
}
}

本文介绍两种方法实现字符串中空格的替换。方法一通过开辟一个3倍大小的新数组来存放替换后的字符串,方法二先计算空格数量再确定新数组大小。

1542

被折叠的 条评论
为什么被折叠?



