题解 | #获取字符串长度#

获取字符串长度

http://www.nowcoder.com/practice/9a2d212d23f5436c80607d5e68c6d12a

题目的主要信息:

  • 输入一串字符串,给出字符串长度
  • 要求使用字符指针来实现

具体做法:

题目所给的代码中,输入的字符串是一个字符数组,采用getline函数输入,这样会在输入的末尾增加一个'\0'表示字符串的结束,如果长度小于数组长度,输入所有字符后加'\0',如果长度大于数组长度,截断输入的前面部分再在最后加'\0'。

因此我们只要遍历字符串,找到末尾的'\0',统计前面出现了多少字符就可以了。

题目另一个要求是用字符指针实现,我们用一个字符指针指向字符数组,其实是指向了数组第一个元素的地址,用*p 就可以访问这个元素的值,因此我们遍历的时候用 *p与'\0'就可以比较是否到了字符串结尾,每次统计一个字符,并且指针通过自加后移一位。

alt

#include <iostream>
using namespace std;

int main() {

	char str[100] = { 0 };
	cin.getline(str, sizeof(str));
    int len = 0; //记录字符串长度
    char* p = str;
    while(*p != '\0'){ //找到为'\0'为止
        len++; //长度增加
        p++; //指针向后
    }
    cout << len << endl;
	return 0;
}

复杂度分析:

  • 时间复杂度:O(n)O(n)nn为字符串长度,一次遍历
  • 空间复杂度:O(1)O(1),只申请了一个指针,常数空间
孤帆远影碧空尽 文章被收录于专栏

牛客网各类题单题解~

全部评论
中间有空格是怎么避免的啊,是上面的getline输入的原因吗?
点赞 回复 分享
发布于 2022-08-30 10:09 黑龙江

相关推荐

07-25 11:26
清华大学 Java
打开电脑,思绪又回到了7月份刚开始的时候,感觉这个月过的如梦如幻,发生了太多事,也算是丰富了我本就是平淡的人生吧太早独立的我习惯了一切都是自己做决定,拥有绝对的决定权,而且永远不会听取别人的建议。我就是那个恋爱四年出轨的男主啦,感觉既然在牛客开了这个头,那我就要做个有始有终的人。从我出轨到结束再到和女朋友和好如初真的太像一场梦了,短短的一个月我经历了太多,也成长了很多,放下了那些本就不属于我的,找回了那些我不该放弃的。我的人生丰富且多彩,但人不能一直顺,上天总会让你的生活中出点乱子,有好有坏,让你学会一些东西,让你有成长。我和女朋友的恋爱四年太过于平淡,日常除了会制造一些小浪漫之外,我们的生活...
段哥亡命职场:不得不说,我是理解你的,你能发出来足见你是个坦诚的人,至少敢于直面自己的内心和过往的过错。 这个世界没有想象中那样非黑即白,无论是农村还是城市,在看不见的阴影里,多的是这样的事。 更多的人选择站在制高点去谩骂,一方面是社会的道德是需要制高点的,另一方面,很多人不经他人苦,却劝他人善。 大部分的我们,连自己生命的意义尚且不能明晰,道德、法律、困境,众多因果交织,人会迷失在其中,只有真的走出来之后才能看明白,可是没走出来的时候呢?谁又能保证自己能走的好,走的对呢? 可是这种问题有些人是遇不到的,不去追寻,不去探寻,也就没了这些烦恼,我总说人生的意义在过程里,没了目标也就没了过程。 限于篇幅,没法完全言明,总之,这世界是个巨大的草台班子,没什么过不去了,勇敢面对,革故鼎新才是正确,祝你早日走出来。查看图片
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务