/My_C_Test

some C (programming language) test

Primary LanguageC

My_C_Test


Author 马陈东
E-mail machendong@nhope.cn

some C (programming language) test

1.input "Hello world" ==> output ""olleH dlrow"

2.给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。

例如给定数组 nums = [-121-4],  target = 1.
 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).

3.添加至少有K个重复字符的最长子串: 找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。

输入:
s = "aaabb", k = 3

输出:
3

最长子串为 "aaa"其中 'a' 重复了 3 输入:
s = "ababbc", k = 2

输出:
5

最长子串为 "ababb"其中 'a' 重复了 2 'b' 重复了 3 

4.给定一个正整数 n,你可以做如下操作:

  1. 如果 n 是偶数,则用 n / 2替换 n。
  2. 如果 n 是奇数,则可以用 n + 1或n - 1替换 n。 n 变为 1 所需的最小替换次数是多少?
输入:
8

输出:
3

解释:
8 -> 4 -> 2 -> 1
示例 2:

输入:
7

输出:
4

解释:
7 -> 8 -> 4 -> 2 -> 1

7 -> 6 -> 3 -> 2 -> 1

5.给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。

示例 1:

输入: n = 12
输出: 3 
解释: 12 = 4 + 4 + 4.

示例 2:

输入: n = 13
输出: 2
解释: 13 = 4 + 9.

6.实现 strStr() 函数

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。

示例 1:

输入: haystack = "hello", needle = "ll"
输出: 2

示例 2:

输入: haystack = "aaaaa", needle = "bba"
输出: -1

7.字符串转换整数 (atoi)

请你来实现一个 atoi 函数,使其能将字符串转换成整数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。 当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。 该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。

注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。

在任何情况下,若函数不能进行有效的转换时,请返回 0。

说明:

假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,请返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。

示例 1:

输入: "42"
输出: 42
示例 2:

输入: "   -42"
输出: -42
解释: 第一个非空白字符为 '-', 它是一个负号我们尽可能将负号与后面所有连续出现的数字组合起来最后得到 -42示例 3:

输入: "4193 with words"
输出: 4193
解释: 转换截止于数字 '3'因为它的下一个字符不为数字示例 4:

输入: "words and 987"
输出: 0
解释: 第一个非空字符是 'w', 但它不是数字或正负号因此无法执行有效的转换示例 5:

输入: "-91283472332"
输出: -2147483648
解释: 数字 "-91283472332" 超过 32 位有符号整数范围因此返回 INT_MIN (−231) 

8.删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

说明:

给定的 n 保证是有效的。

给定一个链表: 1->2->3->4->5,  n = 2.

当删除了倒数第二个节点后链表变为 1->2->3->5.

9.反转字符串中的元音字母

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

输入: "hello"
输出: "holle"

输入: "leetcode"
输出: "leotcede"

主要解题**:先列出元音字母 const char array[10] = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'};,先判断头尾是否是元音字母,若两边都是元音字母,则进行调换

10.验证回文字符串-ⅱ

给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。 示例:

输入: "aba"
输出: True

输入: "abca"
输出: True
解释: 你可以删除c字符

主要解题**:只可以删除一个字母,在for如遇见不相等的字母,(对正序的i-1,反序的不操作,调用_check_char()函数再次进行判断回文的返回值 || 对正序的不操作,反序的j-1,调用_check_char()函数再次进行判断回文的返回值) 进行判断

11.平方数之和

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c。 示例:

输入: 5
输出: True
解释: 1 * 1 + 2 * 2 = 5

输入: 3
输出: False

主要解题**:调用sqrt函数

12.合并两个有序数组

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。

说明:

初始化 nums1 和 nums2 的元素数量分别为 m 和 n。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。 示例:

输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

输出: [1,2,2,3,5,6]

主要解题**:在于从最大开始比较排序