自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(354)
  • 收藏
  • 关注

原创 (200分)- 跳格子3(Java & JS & Python & C)

这表明dp[i]的值取决于前k个状态(即dp[i-k]到dp[i-1])中的最大值。换句话说,要获得第i个格子的最大得分,需要从可跳达的前k个格子中选择得分最高的作为起跳点。从起点score[0]开始,每次最大的步长为k,请你返回小明跳到终点 score[n-1] 时,能得到的最大得分。每个格子上有特定的分数 score = [1, -1, -6, 7, -17, 7],因此,问题的核心转化为:如何高效求解数组中任意长度为k的滑动窗口最大值。第二行输入每个格子的分数 score[i]

2026-03-09 21:34:44 285

原创 (200分)- 跳马(Java & JS & Python & C)

注:允许不同的马在跳的过程中跳到同一位置,坐标为(x,y)的马跳一次可以跳到的坐标为:(x+1, y+2),(x+1, y-2),(x+2, y+1),(x+2, y-1),(x-1, y+2),(x-1, y-2),(x-2, y+1),(x-2, y-1),的格点上,但是不可以超出棋盘范围。接下来输入 m 行 n 列的网格图棋盘,如果第 i 行,第 j 列的元素为 "." ,代表此格点没有棋子,如果为数字 k(1 ≤ k ≤ 9),代表此格点存在等级为 k 的“马”

2026-03-09 21:33:23 69

原创 (200分)- 文本统计分析(Java & JS & Python)

3. 文本支持字符串,字符串为成对的单引号(')或者成对的双引号("),字符串可能出现用转义字符(\)处理的单双引号("your input is\"")和转义字符本身,比如。”分隔,最后一条可以没有”;”,但空文本不能算语句,比如”COMMAND A;特别说明: 对于最后一行文本,若末尾无分号,可统一追加分号处理。每行输入可能包含多条文本,例如"abc;有一个文件,包含以一定规则写作的文本,请统计文件中包含的文本数量。2. 文本可以跨行,比如下面,是一条文本,而不是三条;注意字符串内的”-“,不是注释。

2026-03-09 21:32:34 499

原创 (200分)- 污染水域(Java & JS & Python & C)

数组中只有0和1,0表示纯净,1表示污染,每天只可污染上下左右的水域,如果开始全部被污染,或永远无法污染,则返回-1。输入一行字符串,字符串可转换为N*N的数组,数组可认为是一个水域,判断多少天后,水域被全部污染。本题可以采用图的多源BFS来解决。图的多源BFS实现关键点在于理解queue的作用。

2026-03-09 21:31:18 17

原创 (200分)- 项目排期(Java & JS & Python & C)

当mid容量能满足N个桶装M个球时,说明这是一个可行解,但不一定是最优解。此时应尝试更小的容量,将二分查找的右边界调整为mid-1,继续搜索。项目组共有 N 个开发人员,项目经理接到了 M 个独立的需求,每个需求的工作量不同,且每个需求只能由一个开发人员独立完成,不能多人合作。此时应将左边界调整为mid+1,继续二分查找以寻找更大容量的可行解。表示共有 M 个需求,每个需求的工作量分别为X1天,X2天,...,Xm天。第一行输入为 M 个需求的工作量,单位为天,用逗号隔开。最快完成所有工作的天数。

2026-03-09 21:30:48 168

原创 (200分)- 找城市(Java & JS & Python & C)

当切断通往某个城市 i 的所有道路后,地图上将分为多个连通的城市群,设该城市i的聚集度为DPi(Degree of Polymerization),DPi = max(城市群1的城市个数,城市群2的城市个数,…城市与城市之间的道路。对于城市4,切断通往城市4的所有道路后,形成2个城市群[(1,2,3),(5)],DP4 = max(3,1)= 3。对于城市3,切断通往3的所有道路后,形成2个城市群[(1,2),(4,5)],其聚集度分别都是2。接下来的N-1行每行有两个整数x,y,表示城市x与城市y连接。

2026-03-09 21:29:24 233

原创 (200分)- 找到比自己强的人数(Java & JS & Python)

建立师徒关系映射表(以输入[[1,4],[1,3],[2,4],[2,1],[3,2]]为例): fa = { '1': [4, 3], '2': [4, 1], '3': [2], '4': [] }即A是B的师傅,B是C的师傅,那么A也间接是C的师傅。给定数组[[2,1],[3 2]],每组表示师徒关系,第一个元素是第二个元素的老师,数字代表排名,现在找出比自己强的徒弟。基于上述分析,我设计了一个极端测试用例:[[1,4],[1,3],[2,4],[2,1],[3,2]],其关系示意图如下。

2026-03-09 21:26:12 283

原创 (200分)- 找数字(Java & JS & Python & C)

更优的解法应该是: m = 10001000111 即在完成替换后,将进位影响位后面的所有'1'移至最低位。特殊情况处理: 当n的二进制形式为全1或类似111111、10000时,直接在最高位前补0: n = 0111111 → m = 1011111 n = 010000 → m = 100000。从这些例子可以看出,要找到满足条件的m,只需将n的二进制串中从右往左找到的第一个"01"子串替换为"10"即可。这种方法能在不增加'1'数量的前提下,找到比n大的最小m。1的个数相同,且4是满足条件的最小数。

2026-03-09 21:22:48 181

原创 (200分)- 中文分词模拟器(Java & JS & Python & C)

给定一个连续不包含空格的字符串,该字符串仅包含英文小写字母及英文标点符号(逗号、分号、句号),同时给定词库,对该字符串进行精确分词。第二行输入中文词库 "i,love,china,ch,na,ve,lo,this,is,this,word"题目理解存在一些困惑,主要体现在分词规则的应用上。按顺序输出分词结果 "i,love,china"第一行输入待分词语句 "ilovechina"不在词库中且不成词则输出单个字母。

2026-03-09 21:21:38 294

原创 (100分)- 攀登者1(Java & JS & Python & C)

例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5 和 8,9,10,11,12,13,最高峰高度分别为 4,3。虽然代码展示仍以ACM模式呈现,但已明确区分输入处理与算法逻辑部分,方便考生直接关注核心算法实现。地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。一个山脉可能有多座山峰(高度大于相邻位置的高度,或在地图边界且高度大于相邻的高度)。攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。

2026-03-09 21:20:34 31

原创 (100分)- 内存冷热标记(Java & JS & Python & C)

第二行为访存序列,空格分隔的 N 个内存页框号,页面号范围 0 ~ 65535,同一个页框号可能重复出现,出现的次数即为对应框号的频次。一种典型的方案是基于内存页的访问频次进行标记,如果统计窗口内访问次数大于等于设定阈值,则认为是热内存页,否则是冷内存页。如果第一行 > 0,则接下来按照访问频次降序输出内存页框号,一行一个,频次一样的页框号,页框号小的排前面。对于统计窗口内跟踪到的访存序列和阈值,现在需要实现基于频次的冷热标记。第一行输出标记为热内存的内存页个数,如果没有被标记的热内存页,则输出 0。

2026-03-03 21:08:13 80

原创 (100分)- 免单统计(Java & JS & Python)

华为商城举办了一个促销活动,如果某顾客是某一秒内最早时刻下单的顾客(可能是多个人),则可以获取免单。以(年-月-日时-分-秒.毫秒) yyyy-MM-ddHH:mm:ss.fff 形式给出。输入为 n 行数据,每一行表示一位顾客的下单时间。输出一个整数,表示有多少顾客可以获取免单。请你编程计算有多少顾客可以获取免单。

2026-03-03 21:07:31 261

原创 (100分)- 密钥格式化(Java & JS & Python)

给定一个非空字符串 S,其被 N 个’-‘分隔成 N+1 的子串,给定正整数 K,要求除第一个子串外,其余的串每 K 个用’-‘分隔,并将小写字母转换为大写。字符串 S 被分成了两个部分,每部分 4 个字符;注意,两个额外的破折号需要删掉。

2026-03-03 21:05:03 38

原创 (100分)- 密码输入检测(Java & JS & Python & C)

给定用户密码输入流 input,输入流中字符 '<' 表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。输出经过程序处理后,输出的实际密码字符串,并输出改密码字符串是否满足密码安全要求。我们可以通过栈结构来模拟输入过程:将字符压入栈来模拟输入操作,遇到退格符'<'时则弹出栈顶元素。若满足所有条件,则将栈内字符拼接为字符串并追加"true";否则追加"false"。注意空串退格后仍然为空串,且用户输入的字符串不包含 '<' 字符和空白字符。

2026-03-03 21:04:31 42

原创 (100分)- 来自异国的客人(Java & JS & Python & C)

该客人有个幸运数字n(n < m),每次购物时,其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。以异国进制 m=16 和幸运数 n=5 为例: 当十进制数 k 转换为 m 进制后得到: 15 15 15 15 15。此时客人的幸运数字为4,但是由于该国最大为4进制,故而在该国的进制下不可能出现幸运数字,故而返回0。问:当其购买一个在我国价值 k 的产品时,其中包含多少幸运数字?“按照 m进制的 “位值” 来对比幸运数 n”,可以拿100%通过率。第一行输入为 k,n,m。

2026-03-03 21:03:49 575

原创 (100分)- 括号匹配(Java & JS & Python)

给定一个字符串,里边可能包含“()”、“[]”、“{}”三种括号,请编写程序检查该字符串中的括号是否成对出现,且嵌套关系正确。若括号成对出现且嵌套关系正确,或该字符串中无括号字符,输出:true;若未正确使用括号字符,输出:false。实现时,无需考虑非法输入。

2026-03-03 21:02:37 170

原创 (100分)- 快递运输(Java & JS & Python & C)

一辆运送快递的货车,运送的快递放在大小不等的长方体快递盒中,为了能够装载更多的快递,同时不能让货车超载,需要计算最多能装多少个快递。解题目标转化为:在不超过货车载重的前提下,选择尽可能多的快递,相当于在01背包问题中求取价值最大化(每件物品价值均为1时的最优解)。注:快递的体积不受限制,快递数最多1000个,货车载重最大50000。第一行输入每个快递的重量,用英文逗号隔开,如 5,10,2,11。这道题的关键在于运送尽可能多的快递而不超载。第二行输入货车的载重量,如 20。输出最多能装多少个快递,如 3。

2026-03-03 21:02:05 162

原创 (100分)- 靠谱的车(Java & JS & Python & C)

题目给出的输入数字N范围是1到888,888,888,这让我意识到必须设计一个时间复杂度为O(1)的算法。出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。这道题的解题思路与进制转换类似,但并非八进制,而是需要采用九进制转换的方法。小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋。给出计费表的表面读数,返回实际产生的费用。一个数字,表示实际产生的费用。只有一行,数字N,表示里程表的读数。

2026-03-03 21:00:47 50

原创 (100分)- 考勤信息(Java & JS & Python & C)

根据考勤数据字符串,如果能得到考勤奖,输出”true”;否则输出”false”,滑窗长度 - present次数 = 任意连续7次考勤中的缺勤/迟到/早退次数。公司用一个字符串来表示员工的出勤信息。用户的考勤数据字符串。

2026-03-03 20:59:21 77

原创 (200分)- 树状结构查询(Java & JS & Python)

本题考察树结构的遍历,可采用深度优先搜索(DFS)或广度优先搜索(BFS)。示例代码使用了BFS实现。对于树的存储结构,建议使用Map数据结构,其中key表示父节点,value存储对应的子节点集合。需要打印节点c的所有子节点(d、e、f),按字典序输出结果为d、e、f。第一行输入行数,下面是多行数据,每行以空格区分节点和父节点。树中的节点是唯一的,不会出现两个节点,是同一个名字。输入一个节点之后,请打印出来树中他的所有下层节点。通常使用多行的节点、父节点表示一棵树,比如。输出查询节点的所有下层节点。

2026-03-03 20:57:42 122

原创 (200分)- 转骰子(Java & JS & Python)

骰子是一个立方体,每个面一个数字,初始为左1,右2,前3(观察者方向),后4,上5,下6,用123456表示这个状态,放置在平面上,现从123456这个初始状态开始,根据输入的动作序列,计算得到最终的状态。输入一行,为只包含LRFBAC的字母序列,最大长度为50,字母可重复。这道题目主要考察耐心和细致程度,解题逻辑本身并不复杂。骰子的初始状态和初始状态转动后的状态如图所示。具体实现细节可参考源码部分。

2026-03-01 20:51:16 71

原创 (200分)- 推荐多样性(Java & JS & Python & C)

修复了一个边界问题:当执行"借"操作时,若当前层级列表元素已耗尽需要向下一层级借用时,必须确保存在下一层级列表,否则将无法完成借用操作。我们可以将最终的窗口集当成一个矩阵windows,该矩阵有 k 行 n 列,矩阵的每一列对应一个窗口。那么,在填充 Windows 矩阵的第三行时,应该从列表集的第三个列表开始读取。先输出窗口1的元素列表,再输出窗口2的元素列表,再输出窗口3的元素列表,最后输出窗口4的元素列表。在填充 Windows 矩阵的第二行时,由于第二个列表元素不足,系统自动从第三个列表借用元素。

2026-03-01 20:50:17 585

原创 (200分)- 图像物体的边界(Java & JS & Python)

1)如下图,与像素5的格子相邻的像素1的格子(0,0)、(0,1)、(0,2)、(1,0)、(1,2)、(2,0)、(2,1)、(2,2)、(4,4)、(4,5)、(5,4)为边界,另(0,0)、(0,1)、(0,2)、(1,0)、(1,2)、(2,0)、(2,1)、(2,2)相邻,为1个边界,(4,4)、(4,5)、(5,4)相邻,为1个边界,所以下图边界个数为2。像素1代表的物体边界是指与像素5相邻的像素1的格子,且相邻的边界属于同一边界。如果没有边界输出0(比如只存在像素1,或者只存在像素5)。

2026-03-01 20:47:35 317

原创 (200分)- 攀登者2(Java & JS & Python & C)

例如上图中的数组,有3个不同的山峰,登上位置在3的山可以从位置0或者位置6开始,从位置0登到山顶需要消耗体力 1 * 2 + 1 * 2 + 2 * 2 = 8,从山顶返回到地面0需要消耗体力 2 * 1 + 1 * 1 + 1 * 1 = 4 的体力,按照登山路线 0 → 3 → 0 需要消耗体力12。例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5 和 8,9,10,11,12,13,最高峰高度分别为 4,3。

2026-03-01 20:46:09 311

原创 (200分)- 九宫格按键输入(Java & JS & Python)

九宫格按键输入,输出显示内容,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母,如果输入”/”或者其他字符,则循环中断。输入范围为数字 0~9 和字符’#’、’/’,输出屏幕显示,例如,/表示延迟,例如在英文模式下,输入 22/222,显示为 bc;英文模式下,多次按同一键,例如输入 22222,显示为 b;#用于切换模式,默认是数字模式,执行#后切换为英文模式;在数字模式下,输入 1234,显示 1234。要求输入一串按键,输出屏幕显示。

2026-03-01 20:43:38 299

原创 (200分)- 反射计数(Java & JS & Python & C)

给定一个初始位置和速度,一个物体从给定的初始位置出发,在给定的速度下进行移动,遇到矩阵的边缘则发生镜面发射。矩阵以左上角位置为 [0, 0](列(x),行(y)),例如下面A点坐标为 [2, 1](第二列,第一行)注:速度分量sx和sy的取值范围均为[-1,1]。我们只需统计运动路径中遇到的元素1的数量即可。初始位置为(2,1),速度为(1,-1),那么13个时间单位后,经过点1的个数为3。请计算并给出经过 t 时间单位后,物体经过 1 点的次数。无论物体经过 0 还是 1,都不影响其速度。

2026-03-01 20:42:42 239

原创 (200分)- 发广播

为避免直接覆盖导致父子关系丢失,我们应先找到站点3的根节点(即站点0),然后将根节点0的父站点更新为2。以上算法,还可以继续优化find逻辑,当前find逻辑,找某个站点的祖先,都会从所在链的自身位置开始向上逐级查找,这个过程其实也找到了同一链上它之后的站点的祖先。因为站点1的父站点原本是站点0,而站点0的父站点现在更新为站点2,这是否意味着站点1的祖先站点变成了站点2?因此,我们需要向至少两个站点发送广播信息。matrix[0][1] = 1,因此我们将站点1的父站点更新为0,即arr[1] = 0。

2026-03-01 20:40:55 457

原创 (200分)- 二叉树计算(Java & JS & Python & C)

此外,题目要求基于原始二叉树构建新树,新树中每个节点的值等于其左右子树所有节点值之和。前序遍历采用"根左右"顺序:先访问根节点,再遍历左子树,最后遍历右子树。由于同一棵子树的中序和前序遍历序列长度相同,我们可以据此在前序遍历中划分左右子树的范围。请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。此时,对比前序的左子树和中序的左子树是否节点相同,对比前序的右子树和中序的右子树是否相同。2行整数,第1行表示二叉树的中序遍历,第2行表示二叉树的前序遍历,以空格分割。

2026-03-01 20:37:56 548

原创 (200分)- 叠积木(Java & JS & Python & C)

假设nums数组已按降序排列,则第一层的长度范围应为:nums[0] ~ nums[0] + nums[1](当nums.length > 1时)最优解策略: 由于层长越小越可能获得更高层数,因此从最小层长(nums[0])开始遍历,找到第一个能搭建所有积木的层长即为最优解。更优的方案是将第一层最大长度设为nums[0] + nums[-1](即最大积木与最小积木之和),这样可以避免上述问题。小橙想把这堆积木叠成一面墙,墙的每层可以放一个积木,也可以将两个积木拼接起来,要求每层的长度相同。

2026-03-01 20:35:48 567

原创 (200分)- 查找一个有向网络的头节点和尾节点(Java & JS & Python & C)

关于输出格式的说明: 题目描述要求尾节点降序输出,但测试用例2实际输出为升序(0 1 2)。为保持一致性,本题按升序输出多个尾节点。给定一个有向图,图中可能包含有环,图使用二维矩阵表示,每一行的第一列表示起始节点,第二列表示终止节点,如 [0, 1] 表示从 0 到 1 的路径。求这个数据的首节点与尾节点,题目给的用例会是一个首节点,但可能存在多个尾节点。若最终count小于总节点数total,则说明图中存在环。如果有多个尾节点,按从大到小的顺序输出。说明:入度为0是首节点,出度为0是尾节点。

2026-03-01 20:33:58 342

原创 (100分)- 最长的指定瑕疵度的元音子串(Java & JS & Python & C)

开头和结尾都是元音字母(aeiouAEIOU)的字符串为元音字符串,其中混杂的非元音字母数量为其瑕疵度。给定一个字符串,请找出指定瑕疵度的最长元音字符子串,并输出其长度,如果找不到满足条件的元音字符子串,输出0。接下来一行是一个仅由字符a-z和A-Z组成的字符串,字符串长度(0, 65535]。首行输入是一个整数,表示预期的瑕疵度flaw,取值范围[0, 65535]。子串:字符串中任意个连续的字符组成的子序列称为该字符串的子串。输出为一个整数,代表满足条件的元音字符子串的长度。

2026-02-28 18:44:27 74

原创 (100分)- 最多购买宝石数目(Java & JS & Python & C)

之后 n 行分别表示从第0个到第n-1个宝石的价格,即 gems[0] 到 gems[n-1] 的价格,类型为int,取值范围:(0,1000]。例如客户最大购买宝石个数为m,购买的宝石编号必须为:gems[i],gems[i+1],...,gems[i+m-1]第一行输入n,参数类型为int,取值范围:[0,10^6],表示橱窗中宝石的总数量。橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为 gems[i]之后一行输入v,类型为int,取值范围:[0,10^9],表示你拥有的钱。

2026-02-26 21:09:46 245

原创 (100分)- 最大时间(Java & JS & Python)

在搜索过程中,需要排除不符合时间格式的无效排列。完成搜索后,只需将所有有效时间按字典序升序排列,取最后一个时间值即为所求的最大时间。给定一个数组,里面有 6 个整数,求这个数组能够表示的最大 24 进制的时间是多少,输出这个时间,无法表示输出 invalid。输入整数数组长度为 6,不需要考虑其它长度,元素值为 0 或者正整数,6 个数字每个数字只能使用一次。输出为一个 24 进制格式的时间,或者字符串”invalid“。输入为一个整数数组,数组内有六个整数。

2026-02-26 21:08:14 252

原创 (100分)- 最大括号深度(Java & JS & Python)

代码实现的关键在于:当遇到右括号 ')', ']', '}' 入栈时,必然要与栈顶元素配对出栈,此时深度持续递增。相反,若遇到左括号 '(', '[', '{' 入栈,由于无法立即与栈顶元素形成配对,此时需要将深度重置为0。在栈结构中,遇到闭合括号时会弹出对应元素,因此栈中仅保留左括号。此时,栈的深度(即当前栈的大小)直接反映了括号的最大嵌套层数。现有一字符串仅由 ‘(‘,’)’,'{‘,’}’,'[‘,’]’六种括号组成。一个只包括 ‘(‘,’)’,'{‘,’}’,'[‘,’]’的字符串。

2026-02-26 21:07:46 161

原创 (100分)- 最大矩阵和(Java & JS & Python & C)

输入的第一行包含2个整数n, m(1 <= n, m <= 10),表示一个n行m列的矩阵,下面有n行,每行有m个整数,同一行中,每2个数字之间有1个空格,最后一个数字后面没有空格,所有的数字的在[-1000, 1000]之间。给定一个二维整数矩阵,要在这个矩阵中选出一个子矩阵,使得这个子矩阵内所有的数字和尽量大,我们把这个子矩阵称为和最大子矩阵,子矩阵的选取原则是原矩阵中一块相互连续的矩形区域。另一个关键点在于如何将二维数组压缩为一维数组。此时,求解最大子矩阵和的问题就转化为求解最大子数组和的问题。

2026-02-26 21:06:06 356

原创 (100分)- 最大股票收益(Java & JS & Python & C)

举例说明,若允许同时持有多个股票,以用例2Y 3S 4S 6Y 8S为例:可以全部买入前四只股票,然后统一以8S的价格卖出。此时最大利润为:8S×4 - (2Y + 3S + 4S + 6Y) = 167,而非题目给出的76。pi 的格式为股票价格(非负整型)加上货币单位 Y 或者 S,其中 Y 代表人民币,S 代表美元,这里规定 1 美元可以兑换 7 人民币。.pn),pi 是第i天的股票价格。2Y买入,3S卖出,盈利19 3S买入,4S卖出,盈利7 6Y买入,8S卖出,盈利50 总利润:76。

2026-02-26 21:04:35 295

原创 (100分)- 字符统计及重排(Java & JS & Python)

给出一个仅包含字母的字符串,不包含空格,统计字符串中各个字母(区分大小写)出现的次数,按照字母出现次数从大到小的顺序输出各个字母和字母次数,用英文分号分隔,注意末尾的分号;如果次数相同,按照自然顺序进行排序,且小写字母在大写字母之前。并按照字母出现次数从大到小的顺序。输出各个字母及其出现次数。输入一行,为一个仅包含字母的字符串。字母和次数间用英文冒号分隔。

2026-02-26 21:03:23 213

原创 (100分)- 字符串排序(Java & JS & Python)

关于排序规则:虽然本质上是字典序排序,但需要特别注意大小写不敏感的特性。因此不能直接使用Array.prototype.sort的默认字典序,而必须自定义实现不区分大小写的字典序比较函数。我采用先排序后去重的处理方式。这样可以利用栈结构高效去重 - 因为排序后,不区分大小写的相同字符串会相邻排列。当后入栈的字符串与栈顶字符串(不区分大小写比较)相同时,则跳过入栈操作。该问题涉及两个核心逻辑:排序和去重。

2026-02-26 21:02:39 334

原创 (100分)- 字符串分割(二)(Java & JS & Python)

给定一个非空字符串S,其被N个‘-’分隔成N+1的子串,给定正整数K,要求除第一个子串外,其余的子串每K个字符组成新的子串,并用‘-’分隔。反之,如果它含有的大写字母比小写字母多,则将这个子串的所有小写字母转换为大写字母;对于新组成的每一个子串,如果它含有的小写字母比大写字母多,则将这个子串的所有大写字母转换为小写字母;子串为12abc、abCABc、4aB@,第一个子串保留,子串为12abc、abCABc、4aB@,第一个子串保留,后面的子串每3个字符一组为abC、ABc、4aB、@,

2026-02-26 21:02:00 328

原创 (100分)- 字符串变换最小字符串(Java & JS & Python & C)

我的思路如下:首先对输入字符串str进行字典排序,得到新字符串minStr。若str与minStr相同,说明str已是最小字符串,无需变换,直接返回即可。若两者不同,则表明str不是最小字符串。此时需要遍历str的每个字符,逐个比较str[i]和minStr[i],具体处理逻辑如下图所示。给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。变换规则:交换字符串中任意两个不同位置的字符。按照要求进行变换得到的最小字符串。一串小写字母组成的字符串s。

2026-02-26 21:01:29 327

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除