【剑指offer】第四题 替换空格

来源:互联网 发布:windows vista和xp 编辑:程序博客网 时间:2024/05/16 12:59
/** * 剑指offer 第4题 替换空格 * 特点:1、先扫描串中的空格数,计算好替换后的长度 * 2、使用双指针,从后面开始向前替换,避免从前开始每次替换后就要移动后面的所有的数据 * 测试用例:特殊:有多个空格 * 错误:数组长度不够,字符串为空 *  */package javaTrain;public class Offer4 {public static void main(String[] args) {String a = "Hello   I am Daisy Dong!";  replaceBlack(a);}public static void replaceBlack(String a) {if(a == null) return;int len = 0;int count = 0;//空格的数量 char[] str = a.toCharArray();len = str.length;for(char s : str) {if(s == ' ') ++count;}//使用双指针进行替换和后移int p1 = len - 1;len += count*2;int p2 = len - 1;char[] str1 = new char[len];while(p1 >= 0) {if(str[p1] == ' ') {str1[p2] = '0';str1[--p2] = '2';str1[--p2] = '%'; }else {str1[p2] = str[p1];}--p2;--p1;} System.out.println(str1);}}

1 0