天天看点

cc150:字符串:1.4

题目

编程写程序,将空格全部替换为”%20”。假设字符串尾部有足够的空间存放字符串。并且知道字符串的长度

算法

  • 扫描两次
  • 第一次扫描有多少空格,计算出所需要的长度
  • 第二次扫描开始从反向(从后向前)编辑字符串

    http://blog.csdn.net/believejava/article/details/38682361

    http://blog.csdn.net/believejava/article/details/38682361

package com.ynu.www.tool;

public class ReplaceBlank {
    private static String testString = "hellow new world!";

    // 计算字符串中包含的空格个数
    public static int getBlankNum(String testString) {
        int count = ;
        for (int i = ; i < testString.length(); i++) {
            String tempString = String.valueOf(testString.charAt(i));
            if (tempString.equals(" ")) {
                count++;
            }
        }
        return count;
    }

    // 打印char[]数组
    public static void printArray(char[] testArray) {
        for (char i : testArray) {
            System.out.print(i);
        }
        System.out.println();
    }

    // 将字符串空格转换为20%
    public static void replaceAllBlank(String testString) {

        if (testString == null || testString.length() <= ) {
            return;
        }
        // 字符数组初始长度
        int length = testString.length();
        // 字符数组增加长度后
        int newLength = newLength = getBlankNum(testString) * 
                + testString.length();
        char[] tempArray = new char[newLength];
        System.arraycopy(testString.toCharArray(), , tempArray, , testString.toCharArray().length);
        int indexofOriginal = length - ;
        int indexofNew = newLength - ;
        System.out.println("未替换空格时的字符串:");
        printArray(tempArray);
        while (indexofOriginal >=  && indexofOriginal != indexofNew) {
            if (tempArray[indexofOriginal] == ' ') {
                tempArray[indexofNew--] = '%';
                tempArray[indexofNew--] = '2';
                tempArray[indexofNew--] = '0';
            } else {
                tempArray[indexofNew--] = tempArray[indexofOriginal];
            }
            indexofOriginal--;
        }
        System.out.println("替换空格后的字符串:");
        printArray(tempArray);

    }

    public static void main(String[] args) {
        replaceAllBlank(testString);
    }
}