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

获取字符串长度

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 黑龙江

相关推荐

评论
3
1
分享

创作者周榜

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