| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1241 人关注过本帖
标题:[求助]如何将"HELLO"转换成"OLLEH"
只看楼主 加入收藏
dlcoffee
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-1-31
收藏
 问题点数:0 回复次数:13 
[求助]如何将"HELLO"转换成"OLLEH"
我试了N次 依然不行 求各位指教
搜索更多相关主题的帖子: HELLO OLLEH 指教 
2006-02-09 07:46
aiyuheng
Rank: 1
等 级:新手上路
威 望:1
帖 子:656
专家分:0
注 册:2006-1-12
收藏
得分:0 
用链表吧

when i want to ask anyone,i will ask myself first.
2006-02-09 10:00
ElfDN
Rank: 4
等 级:贵宾
威 望:11
帖 子:291
专家分:0
注 册:2005-11-13
收藏
得分:0 
#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;
}

2006-02-09 10:26
p1s
Rank: 4
等 级:贵宾
威 望:10
帖 子:454
专家分:3
注 册:2005-11-4
收藏
得分:0 
用栈的吧……虽然好像麻烦了一点
记住先进后出……
2006-02-09 18:33
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
收藏
得分:0 
一个小函数不就行了吗

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;
}
}
}

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-02-10 17:14
null
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2006-2-3
收藏
得分:0 
代码欣赏, 下面的连接讨论了几乎所有的 StringResever 的 C/C++ 实现方案.
http://discuss.fogcreek.com/techinterview/default.asp?cmd=show&ixPost=2077

1. 坚决抵制日货 2. 批判共产主义,批判所谓的社会主义
2006-02-10 22:33
DarkHero
Rank: 1
等 级:新手上路
威 望:2
帖 子:191
专家分:0
注 册:2006-1-14
收藏
得分:0 
似乎没什么欣赏的啊……
基本就2思路:从0到strlen-1,还有就是front,end,前者不断+,后者不断-……
那个“异或算法”真是搞笑啊,就是使用异或交换2元素的嘛,a^=b;b^=a;a^=b;

for( ; me.alive() ; ) { 淡泊名利,志存高远 } //Forever
2006-02-11 13:09
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
6楼的连接值得欣赏, 的确是代码中的精华.

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

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



自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-02-11 21:42
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

[CODE]#include <iostream>
using namespace std;

int main()
{
    string a;
    cin>>a;
    cout<<a<<endl;
    
    reverse(a.begin(), a.end());
    cout<<a<<endl;
    
    system("pause");
    return 0;
}[/CODE]

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

[此贴子已经被作者于2006-2-11 22:25:51编辑过]


2006-02-11 22:25
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 
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;
}


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2006-02-11 22:42
快速回复:[求助]如何将"HELLO"转换成"OLLEH"
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036493 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved