您的位置:首页 > 职场人生

面试基础_01字符串反转操作

2014-09-30 11:22 302 查看
一 字符串按字节反转(this is a student ==> tneduts a si siht)
/*************************************************************************
> File Name: testStringByte.h
> Author: qiaozp
> Mail: qiaozongpeng@163.com
> Created Time: 2014-9-30 11:21:15
> Attention: this is a student ===> tneduts a si siht
************************************************************************/
#include <iostream>
#include <string.h>
using namespace std;

void reverseByByte(char* p, char* e)
{
//方法就是按位赋值到目的字符串
int i = 0;
int size = strlen(p);
e[size] = '\0';
while((--size) >= 0)
{
e[i++] = p[size];
}
}

int main()
{
char* p = "you are a student!";
char e[20] = {0};
reverseByByte(p, e);
cout << e << endl;
}


二 字符串按单词反转[b](this is a student ==> student a is this)[/b]
/*************************************************************************
> File Name: testStringWord.h
> Author: qiaozp
> Mail: qiaozongpeng@163.com
> Created Time: 2014-9-30 11:21:15
> Attention: this is a student ===> student a is this
************************************************************************/
#include <iostream>
#include <string.h>
using namespace std;

void reverseByWord(char* p, char* e)
{
//方法就是记录每个整的单词的开始和结束位置,然后拷贝到目标字符串
int len = strlen(p);
int end = len;
int start = 0;
memset(e, 0, len);

while(len > 0)
{
end = len;
while ((p[len - 1] != ' ') && (len > 0))
{
--len;
};
start = len--;
strncpy(e + strlen(e), p + start, end - start);
e[strlen(e)] = ' ';

}
e[strlen(e) - 1] = '\0';      //多出一个空格  谢谢二楼的提醒
}

int main()
{
char* p = "you are a student!";
char e[20] = {0};
reverseByWord(p, e);
cout << e << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: