一:题目
二:上码
class Solution {/**思路:1.双指针法进行解决2.我们先统计出空格的数量,然后再按空格数*2,扩充成字符串,加入到原来的字符串中3.然后我们定义两个指针 一个是原来数组长度的指针 一个是扩充完数组长度下标的指针4.当我们原来数组长度的指针遇见空格的时候,这时候,就开始添加 % 2 0遇见不到就正常赋值5.关于我们为什么是从字符串倒着顺序来的,因为这样的话,我们就不用移动大量的字符 */public String replaceSpace(String s) {if (s == null) return null;StringBuilder str = new StringBuilder();for (int i = 0; i < s.length(); i++) {if (s.charAt(i) == ' ') {str.append(" ");//增加两个空格}} int oldl = s.length()-1;s+=str;int newl = s.length()-1;char[] chars = s.toCharArray();//字符串转换成字符数组for (int i = oldl,j = newl; i < j; i--,j--) {if (chars[i] != ' ') {chars[j] = chars[i]; } else {chars[j] = '0';chars[j-1] = '2';chars[j-2] = '%';j = j-2;}}return new String(chars);//错误用法// for (int i = oldl,j = newl; i < j; i--,j--) {// if (s.charAt(i) != ' ') {// s.charAt(j) = s.charAt(i);// } else {// s.charAt(j) = '0';// s.charAt(j-1) = '2';// s.charAt(j-2) = '%';// j = j-2;// }// }// return s;}
}