2021.3.18-算法打卡-数据结构与算法之美学习

本周主要学习了数据结构中的数组结构,因此做两题数组相关的题目,加深印象。

URL化

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

解题思路

注意题目中的假定该字符串尾部有足够的空间存放新增字符 以及用Java实现的话,请使用字符数组实现
这两点,说明出题者是想要我们用数组去实现这个算法,并不是简单的调用String的substring和replaceAll方法去实现。

创建一个指针end指向字符串s的最后一个位置s.length(),指针i指向真实位置length -1,
当chars[i] == 空格时,在end-1, end-2, end-3 位置向前填充 0 2 %, 当 chars[i] != 空格时, 将 chart[i] 赋值给
chart[end]。当 i < 0 是结束循环。
最后new 一个String。

代码

https://github.com/seanLou/java-leetcode/blob/main/src/cn/louguanyang/code/array/StringToUrl.java

2021.3.18-算法打卡-数据结构与算法之美学习

重新排列字符串

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

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

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

2021.3.18-算法打卡-数据结构与算法之美学习

解题思路

新建一个字符数组,循环遍历所在位置的下标数组,将原字符串转换的字符数组的值赋值给新的字符数组。

代码

https://github.com/seanLou/java-leetcode/blob/main/src/cn/louguanyang/code/array/StringRestore.java

2021.3.18-算法打卡-数据结构与算法之美学习