颠倒字符串顺序 Reverse the C-style string

void ReverseCString(char* ch)
{
	int size = strlen(ch);
	int head = 0;
	int tail = size-1;
	while(head < tail)
	{
		char tmp = ch[head];
		ch[head++] = ch[tail];
		ch[tail--] = tmp;
	}
}


void ReverseCString2(char* str)
{
   char * end = str;
   char tmp;
   if (str) 
   {
     while (*end) 
	 {
       ++end;
     }
     --end;
     while (str < end) 
	 {
        tmp = *str;
        *str++ = *end;
        *end-- = tmp;
      }
    }
}

如果用while(*end++);

则要用两次--end; 因为即使最后一次没有进入循环,end也被加了一次,即跳出循环后end指向\0的下一个元素。

如果用while(*++end);

则只用一次--end; 但是end的初始状态没有被检测。所以最好用while(*end) end++;


void ReverseString(char * ch,int len)//recursion
{
	if(len<=1)
    {
        return;
	}
	
	char temp;
	temp=ch[0];
	ch[0]=ch[len-1];
	ch[len-1]=temp;
	ReverseString(++ch,len-2);  
}


void ReverseStringUsingStack(char* ch)
{
	stack<char> s;
	for(int i = 0; i < strlen(ch); i++)
		s.push(ch[i]);
	for(int i = 0; i < strlen(ch); i++)
	{
		ch[i] = s.top(); //reverse the string
		s.pop();
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值