URL化。编写一种方法,将字符串中的空格全部替换为%20
。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java
实现的话,请使用字符数组实现,以便直接在数组上操作。)
示例 1:
输入:"Mr John Smith ", 13
输出:"Mr%20John%20Smith"
示例 2:
输入:" ", 5
输出:"%20%20%20%20%20"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/string-to-url-lcci
解题思路
1、先将给定的字符串S转化为字符数组originalString
,这里使用了String类中的toCharArray()
方法。
2、用for循环求得空格的数量count
,再求出”真实“的字符串长度trueLength
。
3、创建一个新的字符数组trueArray
,长度为trueLength
,设置两个”指针“(由于java中没有指针的概念,所以用两个数j和k表示就可以了)。
4、j指向原字符串的最后一个字,k指向trueArray
的最后一个数组位置。当originalString[j]
!=’ '时,将字符直接复制到trueArray[k]
,同时k–;否则令trueArray[k--] = '0';trueArray[k--] = '2';trueArray[k--] = '%';
反过来就是换成%20,完成操作后j–,直到j<0,操作结束,将字符数组转化为字符串后输出。
代码
class Solution {
public String replaceSpaces(String S, int length) {
char[] originalString = S.toCharArray();
int count = 0;
for(int i = 0;i < length ; i++){
if(originalString[i] == ' ') count += 1;
}
int trueLength = length + count * 2;
char[] trueArray = new char[trueLength];
int j = length - 1;
int k = trueLength - 1;
while(j >= 0){
if(originalString[j]!=' ') {
trueArray[k--] = originalString[j];
}else{
trueArray[k--] = '0';
trueArray[k--] = '2';
trueArray[k--] = '%';
}
j--;
}
String trueString = new String(trueArray);
return trueString;
}
}