【Leetcode-1.两数之和 -3.无重复字符的最长子串 -9.回文数(C语言)】

简介: 【Leetcode-1.两数之和 -3.无重复字符的最长子串 -9.回文数(C语言)】

Leetcode

Leetcode-1.两数之和

题目:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。

int* twoSum(int* nums, int numsSize, int target, int* returnSize) 
      {
          //两次循环找target
          for (int i = 0; i < numsSize - 1; i++)
          {
              for (int j = i + 1; j < numsSize; j++)
              {
                  if (nums[i] + nums[j] == target)
                  {
                      //找到就开辟一个空间,存放i和j进去,最后返回去
                      int* arr = (int*)malloc(sizeof(int) * 2);
                      *returnSize = 2;
                      arr[0] = i;
                      arr[1] = j;
                      return arr;
                  }
              }
          }
          //找不到
          return 0;
      }

Leetcode-3. 无重复字符的最长子串

题目:给定一个字符串 s ,请你找出其中不含有重复字符的最长子串的长度

代码和注释:

int lengthOfLongestSubstring(char* s) {
          int len = strlen(s);
          //定义left和right从0开始遍历
          int left = 0;
          int right = 0;
          //max记录最长字串的长度
          int max = 0;
          //j用来遍历left到right之间有没有重复字符
          int j = 0;
          //遍历字符串
          for (int i = 0; i < len; i++)
          {
              //SameChar用来记录是否出现相同的字符,每次循环进来都要把它置0;
              //因为上一次循环中有可能把它赋成1
              int SameChar = 0;
              //left和right相当于维护一段子字符串的长度
              //每次right++完后,将left赋给j,即每次都从left开始遍历到right
              //若遇到重复的字符,将j的下一个位置赋给新的left,right再++,这样又开始遍历一段新的子字符串
              for (j = left; j < right; j++)
              {
                  if (s[j] == s[right])
                  {
                      //遇到相同的字符
                      SameChar = 1;
                      break;
                  }
              }
              //遇到相同的字符
              if (SameChar)
              {
                  left = j + 1;
              }
              //判断最长字串的长度
              if (max < right - left + 1)
              {
                  max = right - left + 1;
              }
              right++;
          }
          return max;
      }

Leetcode-9.回文数

题目:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

例如,121 是回文,而 123 不是,-121也不是。

bool isPalindrome(int x) 
      {
          if (x < 0)
          {
              return false;
          }
          int a = x;
          long long b = 0;
          //直接逆序整个数
          while (a > 0)
          {
              b = b * 10 + a % 10;
              a /= 10;
          }
          //如果逆序的数等于原来的x,就符合题意
          if (b == x)
          {
              return true;
          }
          else
          {
              return false;
          }
      }
目录
相关文章
|
4月前
|
存储 算法
Leetcode第三题(无重复字符的最长子串)
这篇文章介绍了解决LeetCode第三题“无重复字符的最长子串”的算法,使用滑动窗口技术来找出给定字符串中最长的不含重复字符的子串,并提供了详细的代码实现和解释。
130 0
Leetcode第三题(无重复字符的最长子串)
|
2月前
|
存储 算法 C语言
【C语言】字符常量详解
字符常量是C语言中处理字符数据的重要工具。通过单引号括起一个字符,我们可以方便地使用字符常量进行字符判断、字符运算和字符串处理等操作。理解字符常量的表示方法、使用场景和ASCII码对应关系,对于编写高效的C语言程序至关重要。
193 11
|
2月前
|
存储 C语言 开发者
【C语言】格式化输出占位符及其标志字符详解(基于ISO/IEC 9899:2024)
在C语言中,格式化输出通过 `printf` 函数等格式化输出函数来实现。格式说明符(占位符)定义了数据的输出方式,标准ISO/IEC 9899:2024(C23)对这些格式说明符进行了详细规定。本文将详细讲解格式说明符的组成部分,包括标志字符、宽度、精度、长度修饰符和类型字符,并适当增加表格说明。
55 6
|
4月前
|
算法
LeetCode回文数(暴力解,求更好的思路)
这篇博客讨论了如何判断一个整数是否为回文数,提供了暴力解法的代码,并寻求更优的算法建议。
64 1
LeetCode回文数(暴力解,求更好的思路)
|
4月前
|
程序员 C语言
【C语言】LeetCode(力扣)上经典题目
【C语言】LeetCode(力扣)上经典题目
|
4月前
|
C++
Leetcode第一题(两数之和)
这篇文章介绍了解决LeetCode第一题“两数之和”的两种方法:暴力法和哈希表法,并提供了相应的C++代码实现。
56 0
Leetcode第一题(两数之和)
|
4月前
|
C语言
C语言字符(串)函数
C语言字符(串)函数
|
4月前
|
存储 安全 编译器
深入C语言库:字符与字符串函数模拟实现
深入C语言库:字符与字符串函数模拟实现
|
5月前
|
存储 C语言
【C语言基础考研向】10 字符数组初始化及传递和scanf 读取字符串
本文介绍了C语言中字符数组的初始化方法及其在函数间传递的注意事项。字符数组初始化有两种方式:逐个字符赋值或整体初始化字符串。实际工作中常用后者,如`char c[10]=&quot;hello&quot;`。示例代码展示了如何初始化及传递字符数组,并解释了为何未正确添加结束符`\0`会导致乱码。此外,还讨论了`scanf`函数读取字符串时忽略空格和回车的特点。
139 8
|
4月前
|
存储 C++ 容器
【LeetCode 13】1.两数之和
【LeetCode 13】1.两数之和
22 0

热门文章

最新文章