天天看點

算法打卡第一周

目錄

第一題: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);
    }