必备算法
文章平均质量分 67
必备算法及LeetCode题示例
A minor
本来无一物,何处惹尘埃
展开
-
【必备算法】基础:复杂度分析
1.为什么需要复杂度分析测试结果非常依赖测试环境测试结果受数据规模的影响很大所以,我们需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法2.大 O 复杂度表示法大 O 复杂度表示代码执行时间或空间,随数据规模++的变化趋势,也叫作渐进时间复杂度 (asymptotic time complexity),简称时间复杂度。数据规模:数据的 多少 或 大小时间 / 空间时间:所有代码的执行时间 T(n) 与每行代码的执行次数 f(n) 成正比。即 T(n) = O(f(原创 2020-10-07 00:03:06 · 920 阅读 · 0 评论 -
【必备算法】排序:图解十大排序算法及Java实现(详细)
十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。注:这里说的整体上不是通过比较实现,但局部还是要经过比较或者调用比较排序算法下面我们就按照时间复杂度的分成三部分进行讲解:O(n²),O(nlogn),O(n)…1.O(n²)1.1 冒泡排序原理:原创 2020-10-08 20:18:42 · 1028 阅读 · 1 评论 -
【必备算法】排序:LeetCode题 1122. 数组的相对排序,56. 合并区间
在看排序相关LeetCode题前,先放个传送门 排序:图解十大排序算法及Java实现(详细)…1122. 数组的相对排序¹给你两个数组,arr1 和 arr2,arr2 中的元素各不相同arr2 中的每个元素都出现在 arr1 中对 arr1 中的元素进行排序,使 arr1 中项的相对顺序和 arr2 中的相对顺序相同。未在 arr2 中出现过的元素需要按照升序放在 arr1 的末尾。示例:输入:arr1 = [2,3,1,3,2,4,6,7,9,2,19], arr2 = [2,1,4,原创 2020-10-12 20:17:55 · 976 阅读 · 0 评论 -
【必备算法】二分查找:LeetCode题(一)69. x 的平方根,367. 有效的完全平方数
在看二分查找的LeetCode题之前,先看看二分查找的基础知识:使用二分查找的条件:可以通过索引访问(链表不行)有序存在上下界二分查找的实质:二分查找不是一上来就去找指定值,而是不断进行定位缩小范围的过程主要用来对一些暴力迭代进行优化复杂度:O(logN)Java模板:int left = 0, right = arr.length - 1;while (left <= right) { // 这里是 <=,即arr[left=right]也要进入判断逻辑原创 2020-10-13 13:13:57 · 1503 阅读 · 0 评论 -
【必备算法】二分查找:LeetCode题(二)33. 搜索旋转排序数组,240. 搜索二维矩阵 II
33. 搜索旋转排序数组²假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], target = 0输出: 4示例 2:输入: nums = [4,5,6,7,0,原创 2021-02-26 01:47:08 · 120 阅读 · 0 评论 -
【必备算法】贪心算法:LeetCode题 860. 柠檬水找零,122. 买卖股票的最佳时机 II,455. 分发饼干,55. 跳跃游戏
860. 柠檬水找零¹在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:[5,5,5,10,20]输出:true解释:前 3 位顾客那里,我们按顺序收取 3 张 5原创 2020-10-07 16:56:28 · 2362 阅读 · 0 评论 -
【必备算法】DFS:LeetCode题 22. 括号生成,17. 电话号码的字母组合,200. 岛屿数量
22. 括号生成²给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]1.DFS思路:这很显然是一个树形,如图递归函数:void dfs(int left, int right, String str, List<String>res, int n)层级(level):left原创 2020-10-14 20:51:59 · 2370 阅读 · 0 评论 -
【必备算法】BFS:LeetCode题 433. 最小基因变化,515. 在每个树行中找最大值
433. 最小基因变化²一条基因序列由一个带有8个字符的字符串表示,其中每个字符都属于 "A", "C", "G", "T"中的任意一个。假设我们要调查一个基因序列的变化。一次基因变化意味着这个基因序列中的一个字符发生了变化。例如,基因序列由"AACCGGTT" 变化至 "AACCGGTA"即发生了一次基因变化。与此同时,每一次基因变化的结果,都需要是一个合法的基因串,即该结果属于一个基因库。现在给定3个参数 — start, end, bank,分别代表起始基因序列,目标基因序列及基因库,请找出原创 2020-10-14 22:02:27 · 973 阅读 · 0 评论 -
【必备算法】回溯:LeetCode题 78. 子集,46. 全排列,51. N皇后,37. 解数独
78. 子集²给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]解法:回溯思路:树形问题,并存在回退。树如下图递归函数:void f (int idx, List<Integer> list, List<List<Inte原创 2020-10-15 23:43:42 · 1102 阅读 · 0 评论 -
【必备算法】分治:LeetCode题 50. Pow(x, n),169. 多数元素
分治:递归的基础上多了一步对结果的合并def divide_conquer(problem, param1, param2, ...): # recursion terminator if problem is None: print_result return # prepare data data = prepare_data(problem) subproblems = split_problem(problem, data) # conquer s原创 2020-10-16 17:30:57 · 662 阅读 · 0 评论 -
【必备算法】动态规划:LeetCode题(一):70.爬楼梯,746. 使用最小花费爬楼梯
53. 最大子序和¹给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。1.动态规划思路:可以分治(当前最大 = 前一个最大 + 当前值)正向分解:problem(i) = max(problem(i - 1), 0) + nums[i],可理解成之前的和若小于0就不加状态数组:d[i] --> d原创 2020-10-24 17:54:53 · 1571 阅读 · 0 评论 -
【必备算法】动态规划:LeetCode题(二):198. 打家劫舍,213. 打家劫舍 II
198. 打家劫舍¹你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你**在不触动警报装置的情况下,**能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。原创 2020-10-24 17:59:00 · 1754 阅读 · 0 评论 -
【必备算法】动态规划:LeetCode题(三)53. 最大子序和,300. 最长上升子序列
53. 最大子序和¹给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。解法:动态规划思路:分解模型且存在重复子问题(==>求每个求每个位置的最大子序和,然后找最值)。递推公式,problem(i) = max(problem(i - 1), 0) + nums[i],状态数组:d[i]。到第i位时的原创 2020-11-09 15:30:12 · 1892 阅读 · 0 评论 -
【必备算法】动态规划:LeetCode题(四) 62. 不同路径,63. 不同路径 II,120. 三角形最小路径和
62. 不同路径²一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右3.原创 2020-10-20 17:35:35 · 2032 阅读 · 0 评论 -
【必备算法】动态规划:LeetCode题(五)1143. 最长公共子序列,72. 编辑距离
1143. 最长公共子序列²给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = "abcde"原创 2021-03-07 19:31:49 · 161 阅读 · 0 评论 -
【必备算法】动态规划:LeetCode题(六)322. 零钱兑换,518. 零钱兑换 II
322. 零钱兑换²给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3 解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:你可以认为每种硬币的数量是无限的。解法:动态规划思路:分解模型&&重复子问原创 2020-11-09 15:17:59 · 2318 阅读 · 0 评论 -
【必备算法】动态规划:一个思路解决六道股票问题
买卖股票系列一共有6道题,都是不断交易一只股票(股价通过price[]给出,数组长度表示可以交易的天数)然后求最大利润:121. 买卖股票的最佳时机¹:股票只能交易一次122. 买卖股票的最佳时机 II¹:股票可以交易无数次123. 买卖股票的最佳时机 III³:股票可以交易2次188. 买卖股票的最佳时机 IV³:股票可以交易K次309. 最佳买卖股票时机含冷冻期²:可以交易无数次,但完成一笔交易(买+卖)后有一天冷却期714. 买卖股票的最佳含手续费²:可以交易无数次,但完成一笔交易(买+原创 2020-11-19 00:55:12 · 7198 阅读 · 3 评论 -
【必备算法】动态规划:LeetCode题(七)121. 买卖股票的最佳时机,122. 买卖股票的最佳时机 II
121. 买卖股票的最佳时机¹给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。注意:你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在原创 2020-11-19 18:08:22 · 1063 阅读 · 0 评论 -
【必备算法】动态规划:LeetCode题(八)123. 买卖股票的最佳时机 III,188. 买卖股票的最佳时机 IV
123. 买卖股票的最佳时机 III³给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [3,3,5,0,0,3,1,4]输出: 6解释: 在第 4 天(股票价格 = 0)的时候买入,在第 6 天(股票价格 = 3)的时候卖出,这笔交易所能获得利润 = 3-0 = 3 。 随后,在第 7 天(股票价格 = 1)的原创 2021-03-14 18:37:03 · 222 阅读 · 0 评论 -
【必备算法】动态规划:LeetCode题(九)309. 最佳买卖股票时机含冷冻期,714. 买卖股票的最佳含手续费
188. 买卖股票的最佳时机 IV³给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意: 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [2,4,1], k = 2输出: 2解释: 在第 1 天 (股票价格 = 2) 的时候买入,在第 2 天 (股票价格 = 4) 的时候卖出,这笔交易所能获得利润 = 4-2 = 2 。示例 2:输入: [3,2,6,5,0,3],原创 2020-11-19 23:41:17 · 1973 阅读 · 0 评论 -
【必备算法】动态规划:LeetCode题(十)343. 整数拆分,279. 完全平方数
343. 整数拆分²给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。说明: 你可以假设 n 不小于 2 且不大于 58。解法一:分治(超时)分解模型(==>求所有约数(分解后的)最大乘积)。递推公式,f(n) = max(i*(n-i),原创 2020-11-09 13:52:46 · 1598 阅读 · 0 评论 -
【必备算法】位运算:常见位运算符及规律
1.位运算符左移(<<):0011 << 1 = 0100,表现在十进制相当于乘2右移(>>):0110 >> 1 = 0011,表现在十进制相当于除2按位与(&):0011 & 1011 = 0011按位或(|):0011 | 1011 = 1011按位取反(~):~0011 = 1100按位异或(^):0011 ^ 1011 = 1000相同为0,不同为1;因此异或可用不进位加法来记忆几个特性原创 2020-10-08 21:11:46 · 9822 阅读 · 0 评论 -
【必备算法】位运算:LeetCode题(一) 191. 位1的个数,231. 2的幂,190. 颠倒二进制位,371. 两整数之和
在看位运算相关LeetCode题之前,先放个传送门 常见位运算符及规律…191. 位1的个数¹编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。示例 2:输入:00000000000000000000000010000000输出:1解释原创 2020-10-12 21:49:34 · 920 阅读 · 0 评论 -
【必备算法】位运算:LeetCode题(二)136. 只出现一次的数字,268. 缺失数字,461. 汉明距离,50. Pow(x, n)
上一篇 位运算:LeetCode(一) 191. 位1的个数,231. 2的幂,190. 颠倒二进制位,371. 两整数之和136. 只出现一次的数字¹给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解法一:暴力法思路:对于每个数字,都在整个数组找一遍看有无相同元素原创 2020-10-12 23:25:03 · 1229 阅读 · 0 评论 -
【必备算法】字符串(基础问题):LeetCode题 58. 最后一个单词的长度,14. 最长公共前缀
58. 最后一个单词的长度¹给定一个仅包含大小写字母和空格 ' ' 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。示例:输入: "Hello World"输出: 5解法:顺推思路:不是找出最后一个字符串后再求长度,而是直接找到最后一个单词起始索引,然后用长度减去就行复杂度:Time:O(n)Space:O(1)原创 2020-10-16 19:02:30 · 721 阅读 · 0 评论 -
【必备算法】字符串(基础问题):LeetCode题 709. 转换成小写字母,8. 字符串转换整数 (atoi)
709. 转换成小写字母¹实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: "Hello"输出: "hello"示例 2:输入: "here"输出: "here"示例 3:输入: "LOVELY"输出: "lovely"解法:ASCII码思路:大写字母转小写直接ASCII+32复杂度:Time:O(n)Space:O(1)public String toLowe原创 2021-03-15 01:16:58 · 199 阅读 · 0 评论 -
【必备算法】字符串(字母统计问题):LeetCode题 771. 宝石与石头,387. 字符串中的第一个唯一字符
771. 宝石与石头¹给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J = "z", S = "ZZ"输出: 0注意:S 和 J 最多含有50个字母。J 中的字符不重复。解法一:双重原创 2020-10-16 19:04:47 · 762 阅读 · 0 评论 -
【必备算法】字符串(异位词问题):LeetCode题 242. 有效的字母异位词,49. 字母异位词分组,438. 找到字符串中所有字母异位词
242. 有效的字母异位词¹给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。进阶:如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?解法一:双重循环思路:很简单,就是判断两个字符串的组成是否完全相同。落实在代码上原创 2020-10-16 23:02:11 · 1616 阅读 · 0 评论 -
【必备算法】字符串(反转问题):LeetCode题 344. 反转字符串,541. 反转字符串 II,917. 仅仅反转字母
344. 反转字符串¹编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a原创 2020-10-16 20:47:12 · 1282 阅读 · 0 评论 -
【必备算法】字符串(反转问题):LeetCode题 151. 翻转字符串里的单词,557. 反转字符串中的单词 III
在看本文之前,最好先看前一篇 字符串(反转问题):LeetCode题 344. 反转字符串,541. 反转字符串 II,917. 仅仅反转字母。然后再看本篇反转字符串的单词。151. 翻转字符串里的单词²给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转原创 2020-10-16 20:50:58 · 1796 阅读 · 0 评论 -
【必备算法】字符串(回文问题):LeetCode题 125. 验证回文串,680. 验证回文字符串 Ⅱ
写在前面,判断是不是回文的逻辑其实很简单,就是借助双指针不断判断首尾相应位置元素是否相等,java模板如下:boolean isPalindrom(String str, int left, int right) { while (left < right) { if (s.charAt(left) != s.charAt(right)) return false; left++; right--; } return true;}125. 验原创 2020-10-18 19:06:51 · 1490 阅读 · 0 评论 -
【必备算法】字符串(回文问题):LeetCode题 647. 回文子串,5. 最长回文子串
647. 回文子串²给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。示例 1:输入: "abc"输出: 3解释: 三个回文子串: "a", "b", "c".示例 2:输入: "aaa"输出: 6说明: 6个回文子串: "a", "a", "a", "aa", "aa", "aaa".解法一:枚举法(超时)枚举出来所有子串,然后判断是否回文,回文就保存。解法二:枚举中心思路:以每个原创 2021-03-15 01:19:41 · 179 阅读 · 0 评论 -
【必备算法】字符串(回文问题):LeetCode题 9. 回文数,234. 回文链表
文章开头先放个传送门,是回文字符串相关的LeetCode题 字符串(回文问题):LeetCode题 125. 验证回文串,680. 验证回文字符串 Ⅱ,647. 回文子串,5. 最长回文子串,两篇可以对比着看。9. 回文数¹判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。原创 2020-10-18 20:22:28 · 818 阅读 · 0 评论 -
【必备算法】字符串(匹配问题):1.暴力匹配,2.Rabin-Karp,3.KMP
1.暴力匹配暴力匹配需要列出所有子串进行比较public int forceSearch(String txt, String pat) { for (int i = 0, j = 0;; i < txt.length(); i++) { for (j = 0; j < pat.length(); j++) if (pat.charAt(j) != txt.charAt(j)) break; if (j == pat.leng原创 2020-10-18 21:30:13 · 1820 阅读 · 0 评论 -
【必备算法】哈希算法:七种应用及场景示例
哈希算法将任意长度的二进制值串映 射为固定长度的二进制值串,这个映射的规则就是哈希算法,通过原始数据映射之后得到的二进制值串就是哈希值需要满足的几点要求从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法);对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同;散列冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小;哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值举例:MD5MD5(" 今天说哈希算法原创 2020-10-18 21:03:22 · 12530 阅读 · 0 评论 -
【必备算法】杂记:求一个数的各位、约数
1.求一个数的各位的两种思路比如说求int类型1234的各位怎么求?方案一:转为字符串后charAtint i = 1234;String s = "" + i; // 数组转字符串:num+“”char cChar = s.charAt(0) // '1' ==> charAt获取的各位为char型int cASC = (int) cChar // 49 ==> ‘1’ 的ASCII码为 49boolean eq = ((cASC - 48)原创 2020-11-09 16:06:43 · 1194 阅读 · 0 评论