笔试面试题–反转字符串中的单词
写一个函数,将字符串翻转,翻转方式如下:“I am a student”反转成“student a am I”,不借助任何库函数。
思路:
先对整个字符进行反转,然后查找空格,再对用空格分割开的单词进行单词内的反转,然后就可以得到正确结果咯,代码如下:
#include <iostream>
void reverse(char str[],int l,int h)//反转字符串
{
if(str == NULL || *str == NULL)
return;
while(l < h){
if(str[l] != str[h]){
str[l] ^= str[h];
str[h] ^= str[l];
str[l] ^= str[h];
}
++l;
--h;
}
}
void changestr(char str[],int len)
{
reverse(str,0,len-1);
int l = 0;
for(int i=0;i<len;i++){
if(str[i] == ' '){
reverse(str,l,i - 1);
l = i + 1;
}
}
}
int main()
{
char str[] = "I am a student";
changestr(str,sizeof(str)-1);
std::cout<<str<<std::endl;
return 0;
}
一条评论
添加新评论
- Pingback: C++技术岗位-笔试面试题总结【持续更新…】 - Veaxen's