【题目】
原文:
Write code to reverse a C-Style String. (C-String means that “abcd” is represented as five characters, including the null character.)
译文:
写代码翻转一个C风格的字符串。(C风格的意思是"abcd"需要用5个字符来表示,包含末尾的 结束字符)
【分析】
这是一道经典的面试题目,虽然看似简单,但仍然有陷阱。唯一的陷阱就是空间复杂度为O(1)即原地置换,要特别注意null字符。
【代码1】
/*********************************
* 日期:2014-05-05
* 作者:SJF0115
* 题目: C风格字符串翻转
* 来源:CareerCup
**********************************/
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
//C风格字符串翻转
void Reverse(char *str){
if(str == NULL){
return;
}
char *beg = str;
char *end = str;
//end指向最后一个元素
while(*end){
end++;
}
//注意
--end;
char temp;
//交换
while(beg < end){
temp = *beg;
*beg = *end;
*end = temp;
end--;
beg++;
}
}
int main(){
char str[] = "1234567890";
Reverse(str);
puts(str);
return 0;
}
【代码2】
//C风格字符串翻转
void Reverse(char *str){
if(str == NULL){
return;
}
int len = strlen(str);
char temp;
//交换
for(int i = 0;i < len / 2;i++){
temp = str[i];
str[i] = str[len-1-i];
str[len-1-i] = temp;
}
}
【代码3】
交换的进一步优化,使用异或进行交换:
//C风格字符串翻转
void Reverse(char *str){
if(str == NULL){
return;
}
char *beg = str;
char *end = str;
//end指向最后一个元素
while(*end){
end++;
}
//注意
--end;
char temp;
//异或 交换
while(beg < end){
*beg = *beg^*end;
*end = *beg^*end;
*beg = *beg^*end;
end--;
beg++;
}
}
分享到:
相关推荐
c语言写的字符串翻转算法,用指针解决问题,程序简洁有力,是C语言指针学习一个很好的范例
将一个大于254长度的字符串翻转,字符串的接收用cgets()来做。
纯C语言实现字符串拆分操作,把字符串拆分成字符串数组,然后再输出。 使用sstream方法,作为底层驱动操作实现非常方便。
C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言JSON字符串生成代码 C语言...
c语言实现字符串替换c语言实现字符串替换c语言实现字符串替换c语言实现字符串替换c语言实现字符串替换c语言实现字符串替换c语言实现字符串替换c语言实现字符串替换c语言实现字符串替换c语言实现字符串替换c语言实现...
字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释字符串逆序+c语言字符串逆序输出+c语言字符串逆序逐行解释字符串逆序+c语言字符串逆序输出+c语言...
自己写的字符串截取,很灵活,很好用。你也可以自己修改。
C语言浮点数转字符串
c语言实现字符串分割split(), 实现C语言实现按分隔符来截取字符串
几个字符串处理函数增强版 常用需求基本都能完成 已经编译成DLL 函数列表 兼容字符和串 void revstr char str 字符串反转 int substring char res int pos int len char substr 从pos开始取len个字符到substr中 ...
C语言 获取字符串中的数组C语言 获取字符串中的数组C语言 获取字符串中的数组C语言 获取字符串中的数组
字符串翻转(使用类库方法和stack实现) 其中stack方法速度最快
主要介绍了C语言字符串转换为Python字符串的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
用c语言重写字符串功能函数,如字符串替换,即复制; 字符串比较
字符串翻转,单词不翻转C语言实现
字符串转int int转字符串 IP字符串转int int转ip字符串
C语言大作业,实现基本字符串编辑,void listinput(char *s);//字符串输入 void listoutput(char *s);//字符串输出 int listlenth(char *s);//求串长 void linklist(char *s,char *t);//串连接 int listcompare(char...
c的简单基础类,即在很多字符串中找到自己的查找的字符串
字符串翻转,单词不翻转java语言实现
9.1 1分钟彻底理解指针的概念 9.2 大话C语言指针变量 9.3 C语言指针变量的运算 9.4 数组指针(指向数组的指针) 9.5 字符串指针(指向字符串的