1.1. 基本结构

字符串是由若干字符组成的序列。


1.2. 常见面试题

1.2.1. 替换空格

  1. 调用子代函数。

    此方法每次替换一次都会将字符串向后移动,损失了时间效率。

    • 时间:o(n^2),空间:o(1)
public class Solution {
    public String replaceSpace(StringBuffer str) {
        return str.toString().replace(" ", "%20");
    }
}
  1. 首先,遍历字符串,然后获得空格数(用于扩容);然后,建立两个指针l1l2,分别用于指向老数据末尾,和插入的数据位。
    • 时间:o(n),空间:o(1)

public class Solution {
    public String replaceSpace(StringBuffer str) {
        //0.判断边界
        if(str.length()==0){
            return str.toString();
        }

        //1. 记录长度
        int l1 = str.length();
        for (int i = 0; i < l1; i++) {
            char data = str.charAt(i);
            //判断空格,并增加字符串长度
            if(Character.isSpaceChar(data)){
                str.append("  ");
            }
        }
        int l2 = str.length()-1;
        //2. 移动数据
        for (int i = l1-1; i >= 0; i--,l2--) {
            if(Character.isSpaceChar(str.charAt(i))){
                str.setCharAt(l2, '0');
                str.setCharAt(--l2, '2');
                str.setCharAt(--l2, '%');
            }else{
                str.setCharAt(l2,str.charAt(i));
            }
        }
        return str.toString();
    }
}
//测试类
public class Main {
    public static void main(String[] args) {
        StringBuffer str = new StringBuffer(" ");
        StringBuffer str = new StringBuffer("We Are Happy.");
        Solution solution = new Solution();
        String out = solution.replaceSpace(str);
        System.out.println(out);
    }
}

results matching ""

    No results matching ""