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

2024-03-01 09:12:42 浏览数 (1)

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;
			    }
			}

0 人点赞