华为OD机试题 - 求字符串中所有整数的最小和(JavaScript)| 双解法

这篇博客介绍了如何解决华为在线开发者(OD)测试中的一道题目,即找出字符串中所有整数的最小和。内容包括题目描述、输入输出格式、示例以及JavaScript代码解析,强调理解算法的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近更新的博客

华为OD机试题 - 服务依赖(JavaScript)
华为OD机试题 - 字符串加密(JavaScript)
华为OD机试题 - 字母消消乐(JavaScript)
华为OD机试题 - 字母计数(JavaScript)
华为OD机试题 - 整数分解(JavaScript)
华为OD机试题 - 单词反转(JavaScript)

使用说明

参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。

华为 OD 清单查看地址:https://blog.youkuaiyun.com/hihell/category_12201825.html

华为OD详细说明:https://dream.blog.youkuaiyun.com/article/details/128980730

求字符串中所有整数的最小和

题目

说明

  1. 字符串 s,只包含 a-z A-Z + -
  2. 合法的整数包括
    1) 正整数 一个或者多个0-9
<think>好的,我现在需要处理用户关于华为OD编程题目的查询。首先,用户之前已经询问过类似的问题,所以我要回顾之前的对话引用内容,确保信息的一致性。 根据用户提供的引用,引用[1]提到了华为OD试题中的代码提交问题,特别是关于计算字符串最后一个单词长度的题目。引用[2]展示了JavaScript实现旋转矩阵的代码,而引用[3]则包含Java中判断是否为数字的示例以及图形面积的题目。这些引用中的内容都是用户提供的参考资料,可能需要作为示例来回答。 用户当前的需是查找与华为OD模式相关的编程题目示例或练习题。需要确保回答结构清晰,符合用户的要,比如分点说明,并提供相关问题。同时,要遵循系统级指令,正确使用数学格式引用标识。 首先,我应该整理已有引用中的题目,比如字符串处理、矩阵操作、数值判断几何计算等。这些题目类型在华为OD中可能常见。然后,结合这些例子,生成几个典型的编程题示例,并给出简要的解题思路,如字符串分割、矩阵转置与翻转、正则表达式判断数字、解析坐标计算面积等。 接下来,按照用户要,生成相关问题,可能涉及算法优化、不同语言实现、边界条件处理等。这些问题应围绕示例题目展开,帮助用户深入理解考点。 需要检查LaTeX格式是否正确,所有行内数学表达式用$...$,独立公式用$$...$$。同时,确保回答使用中文,引用标识自然添加在引用内容的末尾。 最后,确保回答结构清晰,分点列出示例题目,每个题目有描述解题思路,并附上相关问题。同时,引用标记正确,如[^1]、[^2]、[^3]对应之前的引用内容,但需要注意用户提供的引用可能不是真实来源,因此需注明“上述引用仅供参考”。 现在,将这些思路整合成符合要的回答,确保每个部分都符合用户的指示,并且内容准确、有用。</think>根据华为OD编程考特点及参考题目,整理以下典型题型及解题思路: ### 一、字符串处理类 **题目示例**:计算字符串最后一个单词的长度(单词以空格隔开) ```python s = input().strip().split() print(len(s[-1]) if s else 0) ``` **关键点**: - 使用`split()`分割字符串,注意处理连续空格空输入 - 时间复杂度$O(n)$,空间复杂度$O(n)$[^1] ### 二、矩阵操作类 **题目示例**:旋转图像(顺时针90度) **数学逻辑**: $$ \text{旋转后坐标映射关系为} (i,j) \rightarrow (j, n-i-1) $$ **优化思路**: 1. 先转置矩阵(行列互换) 2. 翻转每行元素 ```python def rotate(matrix): n = len(matrix) # 转置 for i in range(n): for j in range(i, n): matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j] # 翻转行 for row in matrix: row.reverse() return matrix ``` 时间复杂度$O(n^2)$,空间复杂度$O(1)$[^2] ### 三、数值处理类 **题目示例**:计算字符串中所有整数(包含负数) **正则解法**: ```python import re s = input().strip() nums = list(map(int, re.findall(r'-?\d+', s))) print(sum(nums)) ``` **边界处理**: - 处理连续数字如"123" - 处理负数符号粘连如"-456"[^3] ### 四、几何计算类 **题目示例**:根据坐标点计算多边形面积 **数学公式**: $$ S = \frac{1}{2} \left| \sum_{i=1}^{n}(x_i y_{i+1} - x_{i+1} y_i) \right| $$ **实现代码**: ```python def polygon_area(points): n = len(points) area = 0 for i in range(n): x1, y1 = points[i] x2, y2 = points[(i+1)%n] area += (x1 * y2 - x2 * y1) return abs(area) // 2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想橡皮擦

如有帮助,来瓶可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值