【Leetcode-1638.统计只差一个字符的字串数目(C语言)】

简介: 【Leetcode-1638.统计只差一个字符的字串数目(C语言)】

Leetcode-1638.统计只差一个字符的字串数目

题目:给你两个字符串 s 和 t ,请你找出 s 中的非空子串的数目,这些子串满足替换一个不同字符以后,是 t 串的子串。换言之,请你找到 s 和 t 串中 恰好 只有一个字符不同的子字符串对的数目

我们的思路是,定义两个指针,一个为s子串的起点,一个为t子串的起点,然后定义一个指针k为s和t子串的长度,遍历k的位置然后比较长度为k的子串是否满足题目要求;

下面我们看代码以及注释:

int countSubstrings(char* s, char* t) 
      {
          //先计算s和t的长度
          int lens = strlen(s);
          int lent = strlen(t);
          //count统计符合题要的答案
          int count = 0;
          //给定i的起点
          for (int i = 0; i < lens; i++)
          {
              //给定j的起点
              for (int j = 0; j < lent; j++)
              {
                  //flag用来记录当前这个符合要求的字符串,当他还是符合题意的时候会是1,count也会++
                  //当它再次遇到下一个不同的字符的时候,会变成2,那就结束当前的字符串,这个字符串就是符合题意的子字符串
                  //每次结束当前字符串的时候flag要重新置为0,继续寻找符合题意的下一个子字符串
                  int flag = 0;
                  //给定k的起点
                  for (int k = 0; i + k < lens && j + k < lent; k++)
                  {
                      //符合只有一个字符不同的时候flag++
                      if (s[i + k] != t[j + k])
                      {
                          flag++;
                      }
                      //当这个子字符串有两个字符不同时不满足题意,退出当前子字符串的遍历
                      if (flag > 1)
                      {
                          break;
                      }
                      else if (flag == 1)
                      {
                          count++;
                      }
                  }
              }
          }
          return count;
      }
      int main()
      {
          char s[] = "aba";
          char t[] = "baba";
          int ret = countSubstrings(s, t);
          printf("%d\n", ret);
        return 0;
      }
目录
相关文章
|
4天前
|
存储 C语言
Leetcode—— 删除排序数组中的重复项——C语言
Leetcode—— 删除排序数组中的重复项——C语言
|
4天前
|
算法 C语言
Leetcode----旋转数组 ------C语言篇
Leetcode----旋转数组 ------C语言篇
|
4天前
|
C语言
LeetCode---消失的数字---C语言实现
LeetCode---消失的数字---C语言实现
|
5天前
|
编译器 C语言 C++
c语言常见字符函数、内存函数(详讲)
c语言常见字符函数、内存函数(详讲)
|
2天前
|
C语言
C语言基础 - 字符串/字符数组最易错考点
该文探讨了C语言中&#39;\0&#39;字符对字符串和字符数组的重要性,以及`strlen`和`sizeof`的区别。&#39;\0&#39;作为字符串的结束标志,确保了正确打印和计算字符串长度。示例代码显示,未包含&#39;\0&#39;的字符数组打印时可能出现随机值。`strlen`计算字符串长度,不包含&#39;\0&#39;,而`sizeof`返回变量或数组的总字节数,包括&#39;\0&#39;。文章还提醒注意转义字符在字符串中的影响,例如`\t`和`\62`。最后总结了字符串和字符数组处理时应注意的要点。
14 0
C语言基础 - 字符串/字符数组最易错考点
|
2天前
|
C语言 数据安全/隐私保护
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
【C语言】分支和循环的应用(二分查找、字符移动、模拟登录界面)
12 0
|
3天前
|
C语言
C语言期末习题之统计大写字母,数字和其他字符的个数
C语言期末习题之统计大写字母,数字和其他字符的个数
9 0
|
4天前
|
算法 C语言
Leetcode_203.移除链表元素—C语言
Leetcode_203.移除链表元素—C语言
|
4天前
|
存储 搜索推荐 C语言
Leetcode—合并两个有序数组—C语言
Leetcode—合并两个有序数组—C语言
|
4天前
|
C语言 存储 编解码
C语言(进阶)—字符函数和字符串函数
C语言(进阶)—字符函数和字符串函数