本周主要学习了数据结构中的数组结构,因此做两题数组相关的题目,加深印象。
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
重新排列字符串
给你一个字符串 s 和一个 长度相同 的整数数组 indices 。
请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。
返回重新排列后的字符串。
解题思路
新建一个字符数组,循环遍历所在位置的下标数组,将原字符串转换的字符数组的值赋值给新的字符数组。
代码
https://github.com/seanLou/java-leetcode/blob/main/src/cn/louguanyang/code/array/StringRestore.java