【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;
          }
      }
目录
相关文章
|
1月前
|
算法
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
LeetCode刷题---167. 两数之和 II - 输入有序数组(双指针-对撞指针)
|
1月前
|
存储 程序员 C语言
C语言:字符输出
C语言:字符输出
|
1月前
|
存储 C语言
【C语言】利用数组处理批量数据(字符数组)
【C语言】利用数组处理批量数据(字符数组)
|
1月前
|
C语言
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
模拟实现C语言中经典库函数,字符相关的函数与内存相关的函数
|
22小时前
|
C语言
【C语言】字符分类函数与字符转换函数
【C语言】字符分类函数与字符转换函数
7 1
|
2天前
|
C语言 C++
C语言利用ASCII码表统计字符串每个字符出现的次数
C语言利用ASCII码表统计字符串每个字符出现的次数
5 0
|
2天前
|
C语言
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
C语言:字符函数和字符串函数(strlen strcat strcmp strncmp等函数和模拟实现)
|
11天前
【力扣】9. 回文数
【力扣】9. 回文数
|
23天前
|
存储 C语言
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现1
【我爱C语言】详解字符函数isdigit和字符串转换函数(atoi和snprintf实现互相转换字符串)&&三种strlen模拟实现
|
1月前
|
C语言
C语言第二十五弹---字符函数和字符串函数(上)
C语言第二十五弹---字符函数和字符串函数(上)