试题:将 welcome to china,反转输出 china to welcome
第一步:将所有字符交换位置,变成 anihc ot emoclew
void MainWindow::reverseWord(char *s, int len)
{
char ch;
for(int i=0;i<len/2;i++)
{
ch = s[i];
s[i] =s[len-i-1]; //首位对称交换
s[len-i-1]=ch;
}
}
第二步:按照空格,再将字符反转,就是 china to welcome
void MainWindow::reverseWord_Space(char *s, int len)
{
int wordlen=0;
for(int i=0;i<len;i++)
{
if(s[i]==' ')
{
reverseWord(s+i-wordlen,wordlen);
wordlen=0;
}else if(s[i] =='\0') // 结束符
{
reverseWord(s+i-wordlen,wordlen);
wordlen=0;
}else
{
++wordlen;
}
}
}
test:
void MainWindow::test()
{
qDebug()<<"the input char ="<<ch;
reverseWord(ch,strlen(ch)); //strlen 不会计算结束符
reverseWord_Space(ch,sizeof(ch));
qDebug()<<"the output char ="<<ch;
}