《剑指offer》官方思路解法Java版
牛客网是不是今年改版了,之前的解题思路都被清理掉了。看了下大家的题解好像都没有分享这种方法。
虽然Java版的参数传入是String类,不像C语言直接就是字符数组,也不能直接在数组后面扩容。但是其实可以利用StringBuffer类来实现这样的操作。具体的思路的话书上已经讲解了,这里主要是贴出程序来介绍Java的实现方式。
pubilc class Solution{ pubilc String replaceSpace(String s){ if(s == null){ return null; } StringBuffer str = new StringBuffer(s); int length = str.length(); int spaceNum = 0; for(int i = 0;i < length;i++){ if(str.charAt(i) == ' '){ spaceNum++; } } int oldStr = length - 1; length += 2 * spaceNum; int newStr = length - 1; str.setLength(length); while(spaceNum > 0 && newStr >= 0){ char ch = str.charAt(oldStr--); if(ch == ' '){ str.setCharAt(newStr--,'0'); str.setCharAt(newStr--,'2'); str.setCharAt(newStr--,'%'); spaceNum--; } else{ str.setCharAt(newStr--,ch); } } return str.toString(); } }