Write a function that reverses a string. The input string is given as an array of characters s.You must do this by modifying the input array in-place with O(1) extra memory.
문자 배열 s가 입력으로 주어질때, reverse 를 출력하는 함수를 작성하시오. 단 배열을 그 자리에서 바꾸어야 하고, 추가적인 메모리는 O(1)이 되어야 한다.
char형 tmp를 통해 시작과 끝 원소부터 중간까지를 스왑하는 방법을 사용한다. (투 포인터)
class Solution {
public:
void reverseString(vector<char>& s) {
int start=0;
int end=s.size()-1;
char tmp;
while(start < end){
tmp=s[start];
s[start]=s[end];
s[end]=tmp;
start++;
end--;
}
}
};
스왑 과정을 일일이 풀어쓰는 것 보다 , swap을 이용하는게 훨씬 간단하고 빠르다...
위 코드의 while문 내부를 다음과 같이 수정하면 41ms -> 26ms 까지 단축 가능!!
while(start < end){
swap(s[start++],s[end--]);
}