面题:上机操作倒置句子单词不倒置,以空格为分隔符
例:my name is zheng变成 zheng is name my
方法一:(用string)
int main(void) { string s = "Tommmm is my cat"; int k = s.length(); TRACE("%s\n", s.c_str()); int j; ReverseString(&s, j); //对字符串逆置 ReverseWord(&s, j, s.length()-1); //对最后一个单词逆置 TRACE("%s\n", s.c_str());
ReverseWord(&s, 0, s.length()-1); //对所有字符串逆置 TRACE("%s\n",s.c_str()); return 1; } void ReverseString(string *sSrc, int &nIndex) { int nIndexTmp =0; for (int i=0; i<sSrc->length(); i++) { if (sSrc->at(i) == ' ') { ReverseWord(sSrc, nIndexTmp, i-1); nIndexTmp = i+1; } } nIndex = nIndexTmp; } void ReverseWord(string *sWord, int nBegin, int nEnd) { while(nBegin<nEnd) { char cTmp; cTmp = sWord->at(nBegin); sWord->at(nBegin) = sWord->at(nEnd); sWord->at(nEnd) = cTmp; nBegin++; nEnd--; } }
附:对象指针与对象对成员函数引用的区别
/************************************************************************/ //->与.的区别(对象指针和对象的区别) //对于对象指针的成员,我们这样引用:pObj-> Member //对于对象成员,这样引用:Obj.Member /*举例如: 有一个类:CMyObject。 用他生成两个实例: CMyObject *pObject; CMyObject object; 则在引用类成员Member时出现区别: pObject-> Member; object.Member;*/ /************************************************************************/
方法二:(用指针的方法)
浙公网安备 33010602011771号