leetcode題目1528 重新排列字串

2021-10-21 15:20:38 字數 1387 閱讀 8433

給你乙個字串 s 和乙個 長度相同 的整數陣列 indices 。

請你重新排列字串 s ,其中第 i 個字元需要移動到 indices[i] 指示的位置。

返回重新排列後的字串。

示例 1:

輸入:s = 「codeleet」, indices = [4,5,6,7,0,2,1,3]

輸出:「leetcode」

解釋:如圖所示,「codeleet」 重新排列後變為 「leetcode」 。

示例 2:

輸入:s = 「abc」, indices = [0,1,2]

輸出:「abc」

解釋:重新排列後,每個字元都還留在原來的位置上。

示例 3:

輸入:s = 「aiohn」, indices = [3,1,4,2,0]

輸出:「nihao」

示例 4:

輸入:s = 「aaiougrt」, indices = [4,0,2,6,7,3,1,5]

輸出:「arigatou」

示例 5:

輸入:s = 「art」, indices = [1,0,2]

輸出:「rat」

解法1:空間換時間

public static string restorestring(string s, int indices) 

return string.valueof(result);

}

因為增加了result 作為儲存返回,讓記憶體增大,但是執行僅需要一次for迴圈。

可以優化為:

public static string restorestring3(string s, int indices) 

return string.valueof(result);

}

減少記憶體消耗,並且不改變for執行次數。

解法2:時間換空間

public static string restorestring2(string s, int indices) 

for (int i = 0; i < s.length(); i++)

return string.valueof(chars);

}

通過使用map的唯一key,來作為重新排序的方式,有兩次for迴圈,但是通過leetcode的提交結果來看,反而記憶體比上面兩種更少。

我也解釋不了,如果有懂的同學,煩請能指教一下。

Jobdu 題目1528 最長回文子串

題目描述 回文串就是乙個正讀和反讀都一樣的字串,比如 level 或者 noon 等等就是回文串。回文子串,顧名思義,即字串中滿足回文性質的子串。給出乙個只由小寫英文本元a,b,c.x,y,z組成的字串,請輸出其中最長的回文子串的長度。輸入 輸入包含多個測試用例,每組測試用例輸入一行由小寫英文本元a...

Jobdu 題目1528 最長回文子串

題目描述 回文串就是乙個正讀和反讀都一樣的字串,比如 level 或者 noon 等等就是回文串。回文子串,顧名思義,即字串中滿足回文性質的子串。給出乙個只由小寫英文本元a,b,c.x,y,z組成的字串,請輸出其中最長的回文子串的長度。輸入 輸入包含多個測試用例,每組測試用例輸入一行由小寫英文本元a...

leetcode 排序題目

merge k sorted lists insertion sort list sort list first missing positive sort colors 147.insertion sort list sort a linked list using insertion sort....