Q : 문자열에 들어 있는 모든 공백을 '%20'으로 바꾸는 메서드를 작성하라.
인풋 문자열의 길이가 함께 주어진다.
공간복잡도는 고려하지 않는다.
#include <iostream>
char* TransString(char input[], int length);
int main() {
char input[] = {'c','d',' ','a',' ','e','h','\0'};
printf("%s\n", TransString(input, 8));
}
char* TransString(char input[], int length){
int transLength = 0;
for (int i = 0; i < length; i++) {
if (input[i] == ' ') transLength += 3;
else transLength += 1;
}
char* output = new char[transLength];
char* iter = output;
for (int i = 0; i < length; i++) {
printf("%d\n", iter);
if (input[i] != ' ') {
*iter = input[i];
iter += 1;
}
else {
*iter = '%';
iter += 1;
*iter = '2';
iter += 1;
*iter = '0';
iter += 1;
}
}
printf("%c\n", output[transLength - 1]);
return output;
}
문자열의 문자들을 하나씩 읽어오며 카운트한다. 문자가 공백일 경우에는 +3을 한다.
카운트만큼의 크기를 가진 char배열을 생성한다.
입력문자열을 다시 하나씩 읽어오며 준비된 char배열에 그대로 입력한다. 공백일 경우 '%','2','0'을 순서대로 삽입한다.
'문제 풀기 > 코딩인터뷰' 카테고리의 다른 글
[코딩인터뷰 완전정복] 1.6 문자열 압축 (0) | 2019.05.09 |
---|---|
[코딩인터뷰 완전정복] 1.5 하나 빼기 (0) | 2019.05.09 |
[코딩인터뷰 완전정복] 1.4 회문 순열 (0) | 2019.05.08 |
[코딩인터뷰 완전정복] 1.2 순열 확인 (0) | 2019.04.25 |
[코딩인터뷰 완전정복] 1.1 중복이 없는가 (0) | 2019.04.25 |