Andy Back-end Dev Engineer

剑指offer-替换空格

2018-05-30

题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解体思路

1.先遍历字符串,找到存在的空格,在字符串尾部填充空格,使其长度等于填充之后的长度 2.定义两个指针,分别指向新串和旧串末尾 3.从后向前遍历,依次重新setCharAt,这样不会改变p1指向的旧串的内容

复杂度:O(n) + O(1)

public class Solution {
public String replaceSpace(StringBuffer str) {
    int old_len = str.length();
	for(int i=0; i<old_len; i++) {
        if(str.charAt(i) == ' ') {
            str.append("  ");
        }
    }
    
    int p1 = old_len - 1;
    int p2 = str.length() - 1;
    
    while(p2 >= 0 && p2 > p1) {
        char c = str.charAt(p1--);
        if(c == ' ') {
            str.setCharAt(p2--, '0');
            str.setCharAt(p2--, '2');
            str.setCharAt(p2--, '%');
        } else {
            str.setCharAt(p2--, c);
        }
    }
    
    return str.toString();
}
}

Comments

Content