找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 913|回复: 9

[求助]如何将"HELLO"转换成"OLLEH"

[复制链接]
发表于 2009-11-2 01:42:59 | 显示全部楼层 |阅读模式 IP:江苏扬州
我试了N次 依然不行 求各位指教
发表于 2009-11-2 01:43:01 | 显示全部楼层 IP:江苏扬州
用链表吧
回复

使用道具 举报

发表于 2009-11-2 01:43:05 | 显示全部楼层 IP:江苏扬州
#include<iostream>
using namespace std;
int main(){
string s="HELLO";
int len=s.length();
for(int i=0; i<len; i++)
cout<<s[len-i-1];
cout<<endl;
}
回复

使用道具 举报

发表于 2009-11-2 01:43:10 | 显示全部楼层 IP:江苏扬州
用栈的吧……虽然好像麻烦了一点
记住先进后出……
回复

使用道具 举报

发表于 2009-11-2 01:43:17 | 显示全部楼层 IP:江苏扬州
一个小函数不就行了吗

void strConverse(char *str,int len) { //把string反转
char tmp;
for(int i=0;i<=len/2;i++) {
if(str[i]!=str[len-1-i]) { //swap
tmp=str[i];
str[i]=str[len-1-i];
str[len-1-i]=tmp;
}
}
}
回复

使用道具 举报

发表于 2009-11-2 01:43:24 | 显示全部楼层 IP:江苏扬州
代码欣赏, 下面的连接讨论了几乎所有的 StringResever 的 C/C++ 实现方案.
http://discuss.fogcreek.com/techinterview/default.asp?cmd=show&ixPost=2077
回复

使用道具 举报

发表于 2009-11-2 01:43:32 | 显示全部楼层 IP:江苏扬州
似乎没什么欣赏的啊……
基本就2思路:从0到strlen-1,还有就是front,end,前者不断+,后者不断-……
那个“异或算法”真是搞笑啊,就是使用异或交换2元素的嘛,a^=b;b^=a;a^=b;
回复

使用道具 举报

发表于 2009-11-2 01:43:36 | 显示全部楼层 IP:江苏扬州
6楼的连接值得欣赏, 的确是代码中的精华.

除此之外,还可以思考这些问题, 那个递归代码很简短, 那么从效率来看, 哪一个函数的效率比递归来得高呢? 还有那个通过xor 来实现的swap 和普通的通过一个中间变量 temp 来实现的 swap, 哪一个效率更高呢? 在所有的那几个函数中哪一个运行效率最高呢?

最后一个问题, 还有其他实现方式吗? 如果在基本层面没有了, 那么STL呢? 当然STL也是用这基本层面来实现的, 不过作为熟悉一下 STL, 还是值得思考一下.
回复

使用道具 举报

发表于 2009-11-2 01:43:42 | 显示全部楼层 IP:江苏扬州
  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5.     string a;
  6.     cin>>a;
  7.     cout<<a<<endl;
  8.    
  9.     reverse(a.begin(), a.end());
  10.     cout<<a<<endl;
  11.    
  12.     system("pause");
  13.     return 0;
  14. }
复制代码


关于异或和赋值的时间上的效率,能否说明一下?
回复

使用道具 举报

发表于 2009-11-2 01:43:48 | 显示全部楼层 IP:江苏扬州
9楼的程序在Dev中可以运行, 不过在VC6.0中不能通过, 需要加上另外两个头文件.

程序代码:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
string a;
cin>>a;
cout<<a<<endl;

reverse(a.begin(), a.end());
cout<<a<<endl;

system("pause");
return 0;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 23:36 , Processed in 0.224183 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表