【手把手带你刷LeetCode】——18.自定义函数实现strlen()功能(作业)

简介: 自定义函数实现strlen()功能(作业)

今天是力扣打卡第18天!

这道题并不是力扣上面的题目,而是一道作业,鹏哥说很重要,我便把它整理成一篇小博文了。


原题:自定义函数实现strlen()功能

先让我们感受一下strlen()函数:

#include<stdio.h>
#include<string.h>
int main()
{
  char arr[] = "abcdefghij";
  printf("%d\n", strlen(arr));//输出10
  return 0;
}

strlen()就是求字符串中字符的个数,也就是'\0'之前字符的个数

有三种方法实现,请听我一一介绍:

方法一:

#include<stdio.h>
int my_strlen(char* arr)
{
  int count = 0;
  while (*arr != '\0')
  {
    count++;
    arr++;
  }
  return count;
}
int main()
{
  char arr[] = "abcdefghij";
  int sz = my_strlen(arr);
  printf("%d\n", sz);//输出10
  return 0;
}

方法二:递归法

#include<stdio.h>
int my_strlen(char* arr)
{
  //找边界
  if (*arr == '\0')
  {
    return 0;
  }
  int count = my_strlen(arr + 1);
  count++;
  return count;
}
int main()
{
  char arr[] = "abcdefghij";
  int sz = my_strlen(arr);
  printf("%d\n", sz);//输出10
  return 0;
}

方法三:指针 - 指针

#include<stdio.h>
int my_strlen(char* arr)
{
  char* p = arr;
  while (*p != '\0')
  {
    p++;
  }
  return p - arr;
}
int main()
{
  char arr[] = "abcdefghij";
  int sz = my_strlen(arr);
  printf("%d\n", sz);//输出10
  return 0;
}

 

这里就要补充一个知识点了,指针 - 指针表示的是中间元素的个数,不过有前提哦,前提两个指针指向同一块空间。


结语

今天是力扣打卡第18天!

加油啦!!


相关文章
|
程序员
【Leetcode】225. 用队列实现栈、232. 用栈实现队列
【Leetcode】225. 用队列实现栈、232. 用栈实现队列
109 0
【Leetcode】225. 用队列实现栈、232. 用栈实现队列
|
存储 前端开发 算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
160 0
一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法
|
前端开发 算法 JavaScript
LeetCode在既定时间做作业的学生人数使用JavaScript解题|前端学算法
LeetCode在既定时间做作业的学生人数使用JavaScript解题|前端学算法
115 0
LeetCode在既定时间做作业的学生人数使用JavaScript解题|前端学算法
代码随想录刷题|LeetCode 栈和队列的理论基础 232.用栈实现队列 225. 用队列实现栈
代码随想录刷题|LeetCode 栈和队列的理论基础 232.用栈实现队列 225. 用队列实现栈
代码随想录刷题|LeetCode 栈和队列的理论基础 232.用栈实现队列 225. 用队列实现栈
|
存储 算法 索引
代码随想录刷题|LeetCode KMP算法理论 28. 实现 strStr() 459.重复的子字符串
代码随想录刷题|LeetCode KMP算法理论 28. 实现 strStr() 459.重复的子字符串
代码随想录刷题|LeetCode KMP算法理论 28. 实现 strStr() 459.重复的子字符串
|
Java 程序员 开发者
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二:编码实现
本文是《LeetCode第三题(Longest Substring Without Repeating Characters)三部曲》的第二篇,前一篇文章已经列出了完整的解题思路,今天来将此思路转化为具体的Java代码
101 0
LeetCode第三题(Longest Substring Without Repeating Characters)三部曲之二:编码实现
leetcode【栈与队列—简单】 225. 用队列实现栈
leetcode【栈与队列—简单】 225. 用队列实现栈
leetcode【栈与队列—简单】 225. 用队列实现栈
leetcode【栈与队列—简单】 232. 栈实现队列
leetcode【栈与队列—简单】 232. 栈实现队列
leetcode【栈与队列—简单】 232. 栈实现队列
leetcode【字符串—简单】28.实现 strStr()
leetcode【字符串—简单】28.实现 strStr()
leetcode【字符串—简单】28.实现 strStr()
|
JavaScript 前端开发 算法
LeetCode 204. 质数计数:JavaScript 实现埃拉托斯特尼筛法
LeetCode 204. 质数计数:JavaScript 实现埃拉托斯特尼筛法
159 0
LeetCode 204. 质数计数:JavaScript 实现埃拉托斯特尼筛法