JAvaでの単純文字置換

1158 ワード

ネットワークプログラミングでは、URLにスペース、'#'などの特殊な文字が含まれていると仮定し、serverは正しいパラメータ値が得られないことを認識できません.スペースを'%20'に変換するなど、これらの特殊な文字をserverが認識できる文字に変換する必要があります.文字列を指定し、中のスペースを'%20'に変換します.できるだけ効率が高いことが求められる.できるだけO(n)の複雑さが終わって、char配列で文字を保存することを要求して、stringを使うことができません
入力:hello worldなどの元の文字列.
変換された文字列、例えばhello%20 worldを出力します.
import java.util.Scanner;
public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        char[] charArr = str.toCharArray();
		int size = charArr.length;
        for (char _char : charArr) {

            if (_char == ' ') {
                size += 2;
            }
        }

        char[] newArr = new char[size];
        for (int i = 0, j = 0; i < charArr.length; i++) {

            if (' ' != charArr[i]) {
                newArr[j++] = charArr[i];
            } else {
                newArr[j++] = '%';
                newArr[j++] = '2';
                newArr[j++] = '0';
            }
        }

        System.out.println(new String(newArr));
	}
}