-
문자열 뒤집기 두 가지 버전간단기법 2022. 9. 17. 19:11
하나의 변수만 사용
#include <iostream> #include <cstdio> void Reverse(char* string) { char* lastString = string; for (; *lastString != '\0'; lastString++); lastString--; for (; string < lastString;) { *string ^= *lastString; *lastString ^= *string; *string ^= *lastString; string++; lastString--; } } int main() { char str[] = "abcdef"; Reverse(str); printf("%s \n", str); return 0; }
xor 연산을 이용하였음.
xor는 자주 쓰는 연산이 아니기에 처음 봤을 때 이게 무슨 코드인지 알기 어려울 수 있음.
물론, 문자를 swap하는 방식으로 사용하는 것은 잘 알려져 있기에 익숙할 수는 있겠지만...
역시 별로 좋아보이진 않음.
인덱스와 문자열 길이, 문자 변수 하나를 사용한 버전
#include <iostream> #include <cstdio> void Reverse(char* string) { int length = strlen(string) - 1; for (int index = 0; index < length; index++) { char temp = string[index]; string[index] = string[length]; string[length] = temp; length--; } } int main() { char string[] = "abcdef"; Reverse(string); printf("%s\n", string); return 0; }
가독성이 좋은 버전이라 생각. 일반적으로 사용하는 코드로만 해결하였음.
'간단기법' 카테고리의 다른 글
PHP 문득 궁금한거 생길때 정리 (0) 2023.05.16 동적인 데이터를 처리하는 다양한 방법. (0) 2023.03.13 매크로 expand(STRING_CAT 매크로를 예시로) (0) 2022.10.05 [PowerShell] 디렉토리에서 postfix 없애기 (0) 2022.09.17 switch-case 문에서 case가 많을 때, 간단하게 줄이는 방법 (1) 2021.05.09