①. 메모리는 사용한 변환
int rev()
{
char string[20] = "this is test";
char reverse[20];
int i, j = 0;
for( i = strlen(string); i 》= 0; i--)
reverse[j++] = string[i];
reverse[j] = '\\0'; // 이 부분(死)을 잘 빠뜨리는데 주의할 것!!
}
②. 별도의 메모리는 사용하지 않고 변환
int rev()
{
char s[20] = "this is test";
char temp;
int len = strlen(s);
int i;
for( i = 0; i 《 len/2 ; i++) {
temp = s[i];
s[i] = s[len - 1 - i];
s[len - 1 - i] = temp;
}
}
문자가 2byte는 기본으로 하는 한국어일 경우는 힘들겠죠??
③. 재귀함수 이용
char *s = "this is test";
void rec(void)
{
if( *p == NULL) // 종결조건
return;
p++; // 전진방법
rec();
p--; // 수행방법
putchar(*p);
return;
}
* recursive(재귀함수) 코딩하는 방법에 꼭 갖추어야 할 요건
①. 전진방법
②. 종결조건
③. 수행방법
④. 스택 이용
void rev(char string[])
{
int i;
int top = 0;
for( i = 0; s[i] != '\\0'; i++)
PUSH(&top, s[i]);
for( i = 0; s[i] != '\\0'; i++)
s[i] = POP(&top);
}
2009년 12월 20일 일요일
문자열 뒤집기
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기