您的位置:首页 > 其它

字符串反转及数组奇偶划分

2015-04-26 09:46 363 查看
//将字符串反转,型如:123  456  789 abc ,反转后的结果是 abc 789 456 123
/*
#include <iostream>
#include <string.h>
using namespace std;
void Exchange(char *&str)
{
char *p=str+strlen(str)-1;
char *q=str;
while(q<p)
{
char temp=*q;
*q=*p;
*p=temp;
q++;
p--;
}
}
void Grial(char *str)
{
char *p = str;
while(*p!='\0')
{
char *p_1=p;
while(*p!=' ')p++;
char *save=p+1;
*p='\0';
Exchange(p_1);
*p=' ';
p=save;
}
Exchange(str);
}
int main()
{
char s[]="12345 1234 abc";
Grial(s);
cout<<s<<endl;
return 0;
}
//原理是将整个字符串中单个字符串(以空格分割)反转,形如abc 123,第一步操作之后是 cba 321,
//第二步再将整个字符串整体反转,操作之后的结果是 123 abc ,就达到了反转字符串的效果,且不改变原来单个字符串的顺序.
*/

//百度笔试:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数
//要求:空间复杂度o(1),时间复杂度o(m)。
/*#include <iostream>
using namespace std;
void Grial(int a[],int x)
{
int i=-1;
int j=0;
int temp;
while(j<x)
{
while(j!=(x-1) && a[j]%2==0)j++;
i++;
temp = a[i];
a[i] = a[j];
a[j] = temp;
j++;//每次将偶数放在i的位置,所以i的位置从-1开始,直到j=x时,i的左边全市奇数,i的右边全市偶数.
}
}
int main()
{
int a[]={9,6,4,2,43,5,1,43,5,6};
Grial(a,10);
for(int i=0;i<10;i++)
{
cout<<a[i]<<" ";
}
}*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: