重新排列单词间的空格
重新排列单词间的空格
Category
Difficulty
Likes
Dislikes
algorithms
Easy (43.83%)
61
-
TagsUnknown
CompaniesUnknown
给你一个字符串 text ,该字符串由若干被空格包围的单词组成。每个单词由一个或者多个小写英文字母组成,并且两个单词之间至少存在一个空格。题目测试用例保证 text 至少包含一个单词 。
请你重新排列空格,使每对相邻单词之间的空格数目都 相等 ,并尽可能 最大化 该数目。如果不能重新平均分配所有空格,请 将多余的空格放置在字符串末尾 ,这也意味着返回的字符串应当与原 text 字符串的长度相等。
返回 重新排列空格后的字符串 。
示例 1:
123输入:text = " this is a sentence "输出:"this is a sentence"解释:总共有 9 个空格和 4 个单词。可以将 9 个空格平均分配到相邻单词之间,相邻单词间空格数为:9 / (4-1) = 3 个。
示例 2:
...
统子串中的唯一字符
统计子串中的唯一字符
Category
Difficulty
Likes
Dislikes
algorithms
Hard (55.73%)
243
-
Tagsmath
CompaniesUnknown
我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符,并返回唯一字符的个数。
例如:s = "LEETCODE" ,则其中 "L", "T","C","O","D" 都是唯一字符,因为它们只出现一次,所以 countUniqueChars(s) = 5 。
本题将会给你一个字符串 s ,我们需要返回 countUniqueChars(t) 的总和,其中 t 是 s 的子字符串。输入用例保证返回值为 32 位整数。
注意,某些子字符串可能是重复的,但你统计时也必须算上这些重复的子字符串(也就是说,你必须统计 s 的所有子字符串中的唯一字符)。
示例 1:
12345输入: s = "ABC"输 ...
买卖股票的最佳时机III
买卖股票的最佳时机 III
Category
Difficulty
Likes
Dislikes
algorithms
Hard (57.21%)
1215
-
Tagsarray | dynamic-programming
CompaniesUnknown
给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例 1:
1234输入:prices = [3,3,5,0,0,3,1,4]输出:6解释:在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。 随后,在第 7 天(股票价格 = 1)的时候买入,在第 8 天 (股票价格 = 4)的时候卖出,这笔交易所能获得利润 = 4-1 = 3 。
示例 2:
12345输入:prices = [1,2,3,4,5]输出:4解释:在第 1 天(股票价格 = 1) ...
不同的子序列
不同的子序列
Category
Difficulty
Likes
Dislikes
algorithms
Hard (52.29%)
861
-
Tagsstring | dynamic-programming
CompaniesUnknown
给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。
字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)
题目数据保证答案符合 32 位带符号整数范围。
示例 1:
1234567输入:s = "rabbbit", t = "rabbit"输出:3解释:如下图所示, 有 3 种可以从 s 中得到 "rabbit" 的方案。rabbbitrabbbitrabbbit
示例 2:
123456789输入:s = "babgb ...
扰乱字符串
扰乱字符串
Category
Difficulty
Likes
Dislikes
algorithms
Hard (47.71%)
475
-
Tagsstring | dynamic-programming
CompaniesUnknown
使用下面描述的算法可以扰乱字符串 s 得到字符串 t :
如果字符串的长度为 1 ,算法停止
如果字符串的长度 > 1 ,执行下述步骤:
在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串 s ,则可以将其分成两个子字符串 x 和 y ,且满足 s = x + y 。
随机 决定是要「交换两个子字符串」还是要「保持这两个子字符串的顺序不变」。即,在执行这一步骤之后,s 可能是 s = x + y 或者 s = y + x 。
在 x 和 y 这两个子字符串上继续从步骤 1 开始递归执行此算法。
给你两个 长度相等 的字符串 s1 和 s2,判断 s2 是否是 s1 的扰乱字符串。如果是,返回 true ;否则,返回 false 。
示例 1:
1234567891011输入:s ...
分维度计算
题目描述一个 n x n 的二维网络 board 仅由 0 和 1 组成 。每次移动,你能任意交换两列或是两行的位置。
返回 将这个矩阵变为 “棋盘” 所需的最小移动次数 。如果不存在可行的变换,输出 -1。
“棋盘” 是指任意一格的上下左右四个方向的值均与本身不同的矩阵。
示例示例 1:
12345输入: board = [[0,1,1,0],[0,1,1,0],[1,0,0,1],[1,0,0,1]]输出: 2解释:一种可行的变换方式如下,从左到右:第一次移动交换了第一列和第二列。第二次移动交换了第二行和第三行。
示例 2:
123输入: board = [[0, 1], [1, 0]]输出: 0解释: 注意左上角的格值为0时也是合法的棋盘,也是合法的棋盘.
示例 3:
123输入: board = [[1, 0], [1, 0]]输出: -1解释: 任意的变换都不能使这个输入变为合法的棋盘。
提示:1234n == board.lengthn == board[i].length2 <= n <= 30board[i][j] 将只包含 `0`或 `1`
...
输出二叉树
题目描述给你一棵二叉树的根节点 root ,请你构造一个下标从 0 开始、大小为 m x n 的字符串矩阵 res ,用以表示树的 格式化布局 。构造此格式化布局矩阵需要遵循以下规则:
树的 高度 为 height ,矩阵的行数 m 应该等于 height + 1 。矩阵的列数 n 应该等于 2height+1 - 1 。根节点 需要放置在 顶行 的 正中间 ,对应位置为 res[0][(n-1)/2] 。对于放置在矩阵中的每个节点,设对应位置为 res[r][c] ,将其左子节点放置在 res[r+1][c-2height-r-1] ,右子节点放置在 res[r+1][c+2height-r-1] 。继续这一过程,直到树中的所有节点都妥善放置。任意空单元格都应该包含空字符串 “” 。返回构造得到的矩阵 res 。
示例示例1:
1234输入:root = [1,2]输出:[["","1",""], ["2","",""]]
示例 2:
12345输入 ...
排列序列
题目描述给出集合 [1,2,3,…,n],其所有元素共有 n! 种排列。
按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:
“123”“132”“213”“231”“312”“321”给定 n 和 k,返回第 k 个排列。
示例示例 1:12输入:n = 3, k = 3输出:"213"
示例 2:12输入:n = 4, k = 9输出:"2314"
示例 3:12输入:n = 3, k = 1输出:"123"
提示:121 <= n <= 91 <= k <= n!
代码模拟 + 回溯 + 剪纸 (c++)效率较低,对大数目运算会超时。
1234567891011121314151617181920212223242526272829303132333435363738394041class Solution {private: int len;public: bool bl = false; string get ...
python飞机大战
游戏说明上,下,左,右 或 w,s,a,d 控制飞机方向,空格可以使用大招请屏,中间会有掉落子弹加强和大招次数,大招最大次数为 3。
代码说明图片素材请去我的 github 上查找,如有 bug 后续在 github 更新,初学 python 代码乱见谅。
main.py工程目录新建文件 main.py
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115 ...
特殊的二进制序列
题目描述特殊的二进制序列是具有以下两个性质的二进制序列:
0 的数量与 1 的数量相等。二进制序列的每一个前缀码中 1 的数量要大于等于 0 的数量。给定一个特殊的二进制序列 S,以字符串形式表示。定义一个操作 为首先选择 S 的两个连续且非空的特殊的子串,然后将它们交换。(两个子串为连续的当且仅当第一个子串的最后一个字符恰好为第二个子串的第一个字符的前一个字符。)
在任意次数的操作之后,交换后的字符串按照字典序排列的最大的结果是什么?
示例12345输入: S = "11011000"输出: "11100100"解释:将子串 "10" (在S[1]出现) 和 "1100" (在S[3]出现)进行交换。这是在进行若干次操作后按字典序排列最大的结果。
说明:S 的长度不超过 50。S 保证为一个满足上述定义的特殊 的二进制序列。
代码12345678910111213141516171819202122232425262728class Solution { public String ma ...