天天看点

算法打卡第一周

目录

第一题:01.03. URL化

第二题:1528. 重新排列字符串

第一题:01.03. URL化

URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

示例 1:

   输入:"Mr John Smith    ", 13

   输出:"Mr%20John%20Smith"

示例 2:

    输入:"               ", 5

    输出:"%20%20%20%20%20"

public static String replaceSpaces(String S, int length) {
        // 将字符串转为数组
        char[] chars = S.toCharArray();

        // 计算空格数量
        int spaceNum = 0;
        for (int i = 0; i < length; i++) {
            if(chars[i] == ' '){
                spaceNum++;
            }
        }

        // 构建新数组存放结果
        char[] newResult = new char[length + spaceNum*2];
        int index = 0;

        // 遍历原字符数组
        for (int i = 0; i < length; i++) {
            if(chars[i] == ' '){
                newResult[index++] = '%';
                newResult[index++] = '2';
                newResult[index++] = '0';
            }else{
                newResult[index++] = chars[i];
            }
        }

        return new String(newResult);
    }
           

第二题:1528. 重新排列字符串

给你一个字符串 s 和一个 长度相同 的整数数组 indices 。

请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。

返回重新排列后的字符串。

示例 3:

输入:s = "aiohn", indices= [3,1,4,2,0]
输出:"nihao"
           
public static String restoreString(String s, int[] indices) {
        // 临时存储排序后的字符数组
        char[] tempChar = new char[indices.length];

        // 遍历 indices
        for (int i = 0; i < indices.length; i++) {
            tempChar[indices[i]] = s.charAt(i);
        }

        // 输出
        return new String(tempChar);
    }