基础类知识(要求严格的字符串倒退输出),求最优解法,该如何处理
基础类知识(要求严格的字符串倒退输出),求最优解法
本人很懒,积分很少
..........................
要求是将一个字符串倒序输出例如字符串“i love you”,输出为“you love i”
字符长度不限,并且字符保存在char类型变量里面。
用标准C++的基础知识回答,不能使用vector、string等高级方法
........................
希望高人给予回答,谢谢。
------解决方案--------------------
本人小菜 虽然你说不能用vector 和string
但是俺只会用他 呵呵
贴代码
本人很懒,积分很少
..........................
要求是将一个字符串倒序输出例如字符串“i love you”,输出为“you love i”
字符长度不限,并且字符保存在char类型变量里面。
用标准C++的基础知识回答,不能使用vector、string等高级方法
........................
希望高人给予回答,谢谢。
------解决方案--------------------
本人小菜 虽然你说不能用vector 和string
但是俺只会用他 呵呵
贴代码
- C/C++ code
#include<iostream> #include<string> #include<sstream> #include<list> using namespace std; int main() { string s; getline(cin,s); istringstream str(s); string temp; list<string> svec; while(str>>temp) svec.push_front(temp); for(list<string>::iterator beg=svec.begin();beg!=svec.end();++beg) cout<<*beg<<" "; cout<<endl; return 0; }
------解决方案--------------------
- C/C++ code
#include<stdio.h> void func(char*p) { char *t = p; while( (*t!=0 )&&(*t !=' ') ) t++; if( *t !=0 ){ *t = 0; func( t+1 ); } printf("%s ",p); } int main() { char ch[]="i love you"; func( ch ); return 0; }
------解决方案--------------------
char* pstr = "i love you";
char* pend = pstr+strlen(pstr);
char* pbeg = pend;
size_t cur = 0;
char* ptmp = new char[strlen(pstr)+1];
while(pbeg >= pstr)
{
if((*pbeg)!=' ' && (*pbeg)!='\t')
{
--pbeg;
continue;
}
memcpy(ptmp+cur, pbeg+1, pend-pbeg);
cur += pend-pbeg-1;
*(ptmp+cur) = *pbeg;
cur += 1;
pend = pbeg;
--pbeg;
}
if(pend > pbeg)
{
memcpy(ptmp+cur, pbeg+1, pend-pbeg);
}
cout << ptmp << endl;
delete [] ptmp;
ptmp = NULL;
老实说,我不喜欢自己写的这个,觉得有更好的。