替换空格
替换空格
https://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tab=answerKey
参数为String型,利用StringBuffer
public String replaceSpace(String s) { if(s.length() == 0) return ""; StringBuffer sb = new StringBuffer(); int n = s.length(); for(int i = 0; i < n; i++){ if(s.charAt(i) == ' ') sb.append("%20"); else sb.append(s.charAt(i)); } return sb.toString(); }
参数为StringBuffer型
/** 不使用StringBuffer,在原来的上面进行扩容 */ public String replaceSpace(StringBuffer s) { if(s.length() == 0) return ""; int cnt = 0; //空格的数量 int oldLen = s.length(); for(int i = 0; i < oldLen; i++){ if(' ' == s.charAt(i)) cnt++; } int newLen = oldLen+cnt*2; //字符串的新长度 int newIndex = newLen-1; //扩容后的字符串的最后一个位置 s.setLength(newLen); for(int i = oldLen-1; i >= 0; i--){ if(' ' == s.charAt(i)){ s.setCharAt(newIndex--,'0'); s.setCharAt(newIndex--,'2'); s.setCharAt(newIndex--,'%'); }else{ s.setCharAt(newIndex--,s.charAt(i)); } } return s.toString(); }
剑指offer 文章被收录于专栏
为刷过的每一道题都书写一篇题解,便于重复练习~