博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
经典算法面试题目-翻转一个C风格的字符串(1.2)
阅读量:5973 次
发布时间:2019-06-19

本文共 1563 字,大约阅读时间需要 5 分钟。

题目:

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个字符来表示,包含末尾的 结束字符)

解答:

这道题如果就是要考察你有没有注意到C风格字符串最后的那个结束符,那我觉得还是像书 上写的那样,在代码中有所体现。代码如下:

博主表示对这个第一种方法有点懵逼,有懂的大神麻烦教导一下,O(∩_∩)O谢谢。指针方面,我基本上没怎么学~~~

void swap(char &a, char &b){    a = a^b;    b = a^b;    a = a^b;}void reverse1(char *s){    if(!s) return;    char *p = s, *q = s;    while(*q) ++q;    --q;    while(p < q)        swap(*p++, *q--);}

否则的话,可以直接获取字符串的长度,然后从两头开始一一交换相应的字符。代码如下:

void swap(char &a, char &b){    a = a^b;    b = a^b;    a = a^b;}void reverse2(char *s){    int n = strlen(s);    for(int i=0; i < n/2; ++i)        swap(s[i], s[n-i-1]);}

完整代码如下:

#include 
#include
using namespace std;void swap(char &a, char &b){ a = a^b; b = a^b; a = a^b;}void reverse2(char *s){ int n = strlen(s); for(int i=0; i

我对第一种方法的理解:

#include 
#include
#include
using namespace std;void swap(char &a, char &b){ a = a^b; b = a^b; a = a^b;}void reverse2(char *s){ int n = strlen(s); for(int i=0; i

详细解释下c风格字符串:

c风格的字符串是用数组存放的,一般要以’\0’结束
而c++主要以string类代替,更加高效,且不易出错

例如:string str = “123”;就是c++的风格;

char str[4]=”123”;就是c风格
string是c++中的关键字,和int,float等等一样, 在c++中,string 定义的变量可以直接存储字符串。在C语言中是没有这种直接存储字符串的变量的。
[ ]里面是4,是因为,C风格的字符串,在最后都会默认添加’\0’,所以”123”本质上是1 2 3 ‘\0’
它其实是占四个字节。所以如果你只定义3个存储空间的话,那’\0’这个字符串终止标志就回被丢弃,那么以后的应用就回出现问题。举个例子:你用strlen(str)试试查看长度为3时的这个字符串的长度,很可能就会有问题。 ‘\0’ 是c字符串都存在的。

你可能感兴趣的文章
我的友情链接
查看>>
Windows 2003sp2 AD到Windows 2008R2 AD的升级
查看>>
hash
查看>>
vlan的单臂路由
查看>>
CentOS-5.5-64bit+ZCS-6.0.10_GA_2692.RHEL5_64 Install Logs
查看>>
第一个go-mysql-binlog解析
查看>>
爱心存储:从入门到精通
查看>>
Cassandra和HBase主要设计思路对比
查看>>
python基础之迭代器和生成器
查看>>
【Latex】插入空格的几种方式
查看>>
linux中的crondtab定时计划任务
查看>>
sendmail服务器加密与身份认证
查看>>
恢复数据块坏块
查看>>
The 59 Top Influencers in IT Security
查看>>
我的友情链接
查看>>
cacti登陆密码忘记解决办法
查看>>
我的友情链接
查看>>
java.sql.SQLTimeoutException: Timeout after 30001ms of waiting for a connection.
查看>>
第六章 核心API
查看>>
八、配置webmail--EXTMAIL
查看>>