聲明:個人刷題筆記,非指導向嘶炭,如有誤導請見諒,歡迎討論逊桦,拒絕攻擊眨猎。
題目
請實現(xiàn)一個函數(shù),把字符串 s 中的每個空格替換成"%20"强经。
示例 1:
輸入:s = "We are happy."
輸出:"We%20are%20happy."
思路
s.toCharArray()睡陪,轉(zhuǎn)換成數(shù)組,然后匹配' ',然后替換
這種思路問題很大兰迫,最主要是替換成的%20是3個字符信殊,所以相當于是替換一個插入兩個,時間復雜度 O(N^2)轉(zhuǎn)換為鏈表
這種方式插入就比較方便汁果。
涉及的知識點:建立鏈表涡拘;java char空判斷
public class ReplaceSpace {
public static void main(String[] args) {
ReplaceSpace replaceSpace = new ReplaceSpace();
String a = "w";
System.out.println(replaceSpace.replaceSpace(a));
}
public String replaceSpace(String s) {
if (s.isEmpty()) return s;
char[] chars = s.toCharArray();
Node head = new Node();
Node pre = head;
for (int i = 0; i < chars.length; i++) {
Node node = new Node();
node.c = chars[i];
pre.next = node;
pre = node;
}
return head.toString();
}
class Node{
char c;
Node next;
@Override
public String toString() {
String str="";
if (c == ' '){
str = "%20";
}else if (c != '\0'){
str = String.valueOf(c);
}
if (next != null){
return str + next.toString();
}
return str;
}
}
}
image.png
成績不佳,學習下其他題解据德。
題解
class Solution {
public String replaceSpace(String s) {
int length = s.length();
char[] array = new char[length * 3];
int size = 0;
for (int i = 0; i < length; i++) {
char c = s.charAt(i);
if (c == ' ') {
array[size++] = '%';
array[size++] = '2';
array[size++] = '0';
} else {
array[size++] = c;
}
}
String newStr = new String(array, 0, size);
return newStr;
}
}
這個其實就是我的第一個思路鳄乏,我第一個思路錯誤就是想直接替換原數(shù)組,沒想著構(gòu)造棘利,所以才會出現(xiàn)插入的錯覺橱野。時間和空間復雜度都是O(n)