前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Leetcode-1.两数之和 -3.无重复字符的最长子串 -9.回文数(C语言)】

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

作者头像
YoungMLet
发布2024-03-01 09:12:42
860
发布2024-03-01 09:12:42
举报
文章被收录于专栏:C++/Linux

Leetcode-1.两数之和

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

代码语言:javascript
复制
			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 ,请你找出其中不含有重复字符的最长子串的长度

代码和注释:

代码语言:javascript
复制
			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也不是。

代码语言:javascript
复制
			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;
			    }
			}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Leetcode-1.两数之和
  • Leetcode-3. 无重复字符的最长子串
  • Leetcode-9.回文数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档