각종 문자열 반전 방법(이 또는 교환법, 귀속 방법, 이분 사상)
후 3가지 방법으로 귀속 사용
직접 부호
#include
#include
#include
//a=a+b;b=a-b;a=a-b
char* reverse1(char* str)// 1
{
int len=strlen(str);
char* start=str;
char* p=str+len-1;
while(strstr=*str+*p;
*p=*str-*p;
*str=*str-*p;
str++;
p--;
}
return start;
}
//a=a^b;b=a^b;a=a^b a!=b
char* reverse2(char* str)// 2
{
int len=strlen(str);
char* start=str;
char* p=str+len-1;
while(str
str=*str^*p;
*p=*str^*p;
*str=*str^*p;
str++;
p--;
}
return start;
}
//
// 1
char* reverse3(char* str)//
{
if(strlen(str)<2)
{
return str;
}
reverse3(str+1);
int i;
char *p=str;
char first=*str;
for(i=0;istr)-1;i++)
{
*p=*(p+1);
p=p++;
}
*p=first;
return str;
}
//
char* reverse4(char* str,int left,int right)
{
if(left>=right)
{
return str;
}
int temp=str[left];
str[left]=str[right];
str[right]=temp;
reverse4(str,left+1,right-1);
return str;
}
// , 2 1 ,
char* reverse5(char str[],int left,int right)
{
if(right-left==2||right-left==1)
{
int temp=str[left];
str[left]=str[right];
str[right]=temp;
return str;
}
if(left>=right)
{
return str;
}
if((right-left)%2==0&&(right-left)>2)//
{
int i,k;
int mid=(right+left)/2;
reverse5(str,left,mid-1);
reverse5(str,mid+1,right);
for(i=left,k=mid+1;ichar temp=str[i];
str[i]=str[k];
str[k]=temp;
}
}
if((right-left)%2==1&&(right-left)>1)//
{
int i,k;
int mid=(right+left)/2;
reverse5(str,left,mid);
reverse5(str,mid+1,right);
for(i=left,k=mid+1;i1,k<=right;i++,k++)
{
char temp=str[i];
str[i]=str[k];
str[k]=temp;
}
}
return str;
}
int main()
{
char c[100];
scanf("%s",c);
reverse5(c,0,strlen(c)-1);
printf("%s",c);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python3를 사용하여 빠른 배열 정렬2020년 새해 복 많이 받으세요.저는 ryuichi69라고 합니다.오늘도 알고리즘 연습의 성과, 연습을 설명하는 동시에 이 글을 썼다.솔직히 이해하기 쉽게 쓰느라 힘들었는데 설명하기 어려운 부분, 요건 누락 등이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.