+ -
当前位置:首页 → 问答吧 → 【算法】数组就地置逆算法

【算法】数组就地置逆算法

时间:2011-07-22

来源:互联网

抛砖引玉哈~希望大家都来分享程序设计之灵魂

描述

    编写一个函数,接收一个整数值,返回这个数中数字逆序后的结果值。例如,给定数7631,函数返回1367。

输入

    第一行一个正整数T(T<=10),表示有T组测试数据。以下T行,每行一个非负的整数N。
输出

    共T行,对于每组输入数据输出一行,即数字逆序后的结果值。
样例输入

    3
    7631
    101
    51

样例输出

    1367
    101
    15
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.         string str;
  6.         int len;
  7.         char* ptr1;
  8.         char* ptr2;
  9.         int n;
  10.         cin>>n;
  11.         while(n--)
  12.         {
  13.                 cin>>str;
  14.                 len = str.length();
  15.                 ptr1 = &str[0];
  16.                 ptr2 = &str[len-1];
  17.                 while(ptr1 < ptr2)
  18.                 {
  19.                         *ptr1 ^= *ptr2;
  20.                         *ptr2 ^= *ptr1;
  21.                         *ptr1 ^= *ptr2;
  22.                         ptr1++;
  23.                         ptr2--;
  24.                 }
  25.                 cout<<str<<endl;
  26.         }
  27.         return 0;
  28. }
复制代码

作者: 流星清竹   发布时间: 2011-07-22

我会这样
  1. //blah
  2. while(ptr2>=ptr1) {cout<<*ptr2--;}
  3. //blah
复制代码
如果cout<<慢的话,或者先缓存到另外一个数组。

作者: jiang925   发布时间: 2011-08-19

如果想体现不用额外空间来交换数据,直接说重点嘛,搞那么多额外的吸引了注意力。

作者: jiang925   发布时间: 2011-08-19