一个算法问题,请帮忙!!

ccdd14 2006-09-06 10:51:15
如何将一个输入的数字逆序输出
且输入的数字位数不确定
比如:
输入12345.78, 输出78.54321
这题的解法很多
但什么样的算法效率最高呢?
请把详细算法写出来
请帮帮忙!!谢谢啊!!
...全文
332 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
gefengxztg 2006-09-08
  • 打赏
  • 举报
回复
用栈实现,输入一个数字就进栈
最后出栈
lann64 2006-09-08
  • 打赏
  • 举报
回复
上面的算法时间复杂度都是O(n)
有没有时间复杂度是O(1)的
==============================
O(1)?你觉得有可能嘛?总要遍历每个数字吧,O(n)已经是很好的了,再优化不会在复杂度上优化了。
ccdd14 2006-09-08
  • 打赏
  • 举报
回复
对不起
写错
应该是:
上面的算法时间复杂度都是O(n)
有没有时间复杂度是O(1)的

ccdd14 2006-09-08
  • 打赏
  • 举报
回复
上面的算法时间复杂度都是在O(1)
有没有时间复杂度在O(1)的
sinall 2006-09-07
  • 打赏
  • 举报
回复
#include <iostream>
#include <sstream>
using namespace std;

double reverse_double(double arg);

int main(void)
{
double num = 2345.78;
cout << num << " " << reverse_double(num) << endl;

return 0;
}

double reverse_double(double arg)
{
ostringstream oss;
oss << arg;
string str = oss.str();
for (int i = 0; i < str.size()/2; ++i)
{
char temp;
temp = str[i];
str[i] = str[str.size()-i-1];
str[str.size()-i-1] = temp;
}
istringstream iss(str);
iss >> arg;
return arg;
}
  • 打赏
  • 举报
回复
char *p;
p = s;
while(*p) ++p;
while(p != s)
{
cout<<*p;
--p;
}
我觉得从运行速度和内存消耗都较小.
aminconi 2006-09-07
  • 打赏
  • 举报
回复
循环strlen(pStr)/2次
依次首尾对换
  • 打赏
  • 举报
回复
递归也没省空间,函数调用一样要消耗空间.
HappyTree 2006-09-07
  • 打赏
  • 举报
回复
输入的数字位数不确定,建议还是采用非递归方式
JFDream_15 2006-09-07
  • 打赏
  • 举报
回复
采用递归方式确实是比较简洁和比较易懂的算法,但是从效率上而言,它应该是最低的,因为需要有不断的函数的调用的开销,需要不断地压栈,退栈等,要把效率提高,可以把递归方式改为非递归方式,但是改为非递归方式会加大对空间的消耗.其实说白了,就是空间与时间上的对换.
winark 2006-09-07
  • 打赏
  • 举报
回复
如何将一个输入的数字逆序输出
且输入的数字位数不确定
比如:
输入12345.78, 输出78.54321

输出的是78.54321,而不是87.54321,要将小数点两边的分别反过来,楼主是这个意思吗?
forenrol 2006-09-06
  • 打赏
  • 举报
回复
void *reverse(char *p)
{
if(*p=='\0')
return;
reverse(p+1);
cout<<*p;
}

int main()
{
char *p = "adfaf";
reverse(p);
system("pause");
return 0;


说明目前论坛里大家认为的这算比较好的实现逆置功能代码。
采用的是递归方式。
lin_style 2006-09-06
  • 打赏
  • 举报
回复
这个算法不用吧
直接指针倒指回来就好了

64,684

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧