[알고리즘] 문자열에서 공백 값 바꾸기[알고리즘] 문자열에서 공백 값 바꾸기

Posted at 2015.02.12 22:40 | Posted in 알고리즘 문제



facebook에 글올리기



[알고리즘] 문자열에서 공백 값 바꾸기


문제


주어진 문자열 내의 모든 공백을 '%20'으로 바꾸는 메서드를 작성하라.

문자열 끝에 추가로 필요한 문자들을 더할 수 있는 충분한 공간이 있다고 가정하라. 그리고 공백을 포함하는 문자열의 길이도 함께 주어진다고 가정하라

(주의 : 만일 Java로 구현한다면, 문자 배열을 사용하여 필요한 연산을 각 문자에 바로 적용할 수 있또록 하라)



풀이


문자열 조작 문자에서 널리 쓰이는 접근법 하나는 문자열을 뒤에서부터 거꾸로 편집해 나가는 것이다.

끝 부분에 여유 공간이 이씅ㄹ 경우 특히 유용하다. 뭘 덮어 쓰고 있는 건지 걱정하지 않고서도 문자들을 바꿔 나갈 수 있기 때문이다.


먼저 문자열 배열에서 공백의 갯수를 체크하고, 추가로 확보해야할 배열의 크기를 도출한다.

그리고 문자열 배열에서 역순으로 탐색하면서 배열의 끝에서부터 복사하고 공백을 만나면 '%20'을 대입한다.


Colored By Color Scripter

public class ReplaceSpace {
    
    public void replaceSpace(char[] str, int length){
        
        int space =0;
        int newLength = length;
        
        for(int i=0; i<length; i++){
            if(str[i] ==' ') ++space;
        }
        
        newLength += (space*2);
        str[newLength] = '\0';
        
        for(int i=length-1 ; i>=0 ; i--){
            if(str[i] == ' '){
                str[newLength-1] = '0';
                str[newLength-2] = '2';
                str[newLength-3] = '%';
                newLength -=3;
            }else{
                str[newLength-1] = str[i];
                newLength-=1;
            }
        }
    }
}


이웃추가
facebook에 글올리기

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기