/** * 剑指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); } }
原文地址:http://blog.csdn.net/ymzmdx/article/details/45013289