【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;
          }
      }
目录
相关文章
|
7天前
|
C语言
C语言5 字符输出函数和格式输出函数
C语言5 字符输出函数和格式输出函数
13 1
|
22天前
|
存储 算法 索引
力扣经典150题第四十三题:两数之和
力扣经典150题第四十三题:两数之和
12 1
|
22天前
|
算法 测试技术 程序员
力扣经典150题第二十七题:两数之和 II - 输入有序数组
力扣经典150题第二十七题:两数之和 II - 输入有序数组
13 1
|
24天前
力扣-两数之和
力扣-两数之和
9 1
|
25天前
|
C语言
【C语言】:字符分类与转换函数
【C语言】:字符分类与转换函数
15 1
|
18天前
|
索引
821.字符的最短距离-力扣(LeetCode)
821.字符的最短距离-力扣(LeetCode)
9 0
|
22天前
|
存储 算法 程序员
力扣经典150题第三十一题:无重复字符的最长子串
力扣经典150题第三十一题:无重复字符的最长子串
12 0
|
28天前
|
C语言
C语言----字符函数和字符串函数(4)
C语言----字符函数和字符串函数
|
28天前
|
算法 C语言
C语言----字符函数和字符串函数(3)
C语言----字符函数和字符串函数
|
28天前
|
C语言
C语言----字符函数和字符串函数(2)
C语言----字符函数和字符串函数