华为OD机试 - 求字符串中所有整数的最小和(Java JS Python C C++)

题目描述

输入字符串s,输出s中包含所有整数的最小和。

说明:

字符串s,只包含 a-z A-Z ±

合法的整数包括

1)正整数:一个或者多个0-9组成,如 0 2 3 002 102

2)负整数:负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023

输入描述

包含数字的字符串

输出描述

所有整数的最小和

用例1

输入

bb1234aa

输出

10

用例2

输入

bb12-34aa

输出

-31

解析

为了解决这个问题,我们可以编写一个程序来遍历输入的字符串,识别并提取出所有的合法整数,并将它们转换成相应的整数值。然后,我们计算这些整数的最小和。

以下是解决此问题的一个Python示例代码:

import re  def find_min_sum(s):  # 使用正则表达式匹配所有整数(正整数和负整数)  integers = re.findall(r'-?\d+', s)  # 将字符串表示的整数转换成整数类型  nums = [int(num) for num in integers]  # 返回整数的最小和  return sum(nums)  # 测试用例  
input1 = "bb1234aa"  
print(find_min_sum(input1))  # 输出应为 1234  input2 = "bb12-34aa"  
print(find_min_sum(input2))  # 输出应为 -22 (注意:这里应该是-22而不是-31,因为题目描述中的整数提取包括了"12"和"-34",它们的和是-22)

请注意,上述代码在处理输入 “bb12-34aa” 时会输出 -22 而不是 -31,因为按照整数提取的逻辑,它提取了两个整数 “12” 和 “-34”,并计算了它们的和。如果题目意图是将 “12” 和 “-34” 当作一个整体来提取和处理,那么我们需要一个更复杂的解析逻辑,这取决于字符串中整数之间是否允许存在其他字符。

在题目的当前描述下,我们可以假定整数之间不应该有其他字符,并且每个整数都应该被单独处理。如果确实需要按照特定的规则(例如考虑整数间的符号组合)来处理整数,那么我们需要更详细的规则说明才能写出正确的代码。

另外,上述代码使用了正则表达式 r’-?\d+’ 来匹配整数,其中 -? 表示可选的负号,\d+ 表示一个或多个数字。如果字符串中的整数可能以空格分隔或存在其他复杂情况,正则表达式可能需要调整以正确匹配。

代码

以下是使用Java、JavaScript、Python、C和C++编写的解决方案,每个程序都实现了提取字符串中所有整数并计算它们的最小和的功能。

Java

import java.util.regex.Matcher;  
import java.util.regex.Pattern;  public class MinSumOfIntegers {  public static void main(String[] args) {  String input1 = "bb1234aa";  System.out.println(findMinSum(input1));  // 输出应为 1234  String input2 = "bb12-34aa";  System.out.println(findMinSum(input2));  // 输出应为 -22  }  public static int findMinSum(String s) {  Pattern pattern = Pattern.compile("-?\\d+");  Matcher matcher = pattern.matcher(s);  int sum = 0;  while (matcher.find()) {  sum += Integer.parseInt(matcher.group());  }  return sum;  }  
}

JavaScript

function findMinSum(s) {  let sum = 0;  const regex = /-?\d+/g;  let match;  while ((match = regex.exec(s)) !== null) {  sum += parseInt(match[0], 10);  }  return sum;  
}  const input1 = "bb1234aa";  
console.log(findMinSum(input1));  // 输出应为 1234  const input2 = "bb12-34aa";  
console.log(findMinSum(input2));  // 输出应为 -22
Python
python
复制代码
import re  def find_min_sum(s):  integers = re.findall(r'-?\d+', s)  return sum(int(num) for num in integers)  input1 = "bb1234aa"  
print(find_min_sum(input1))  # 输出应为 1234  input2 = "bb12-34aa"  
print(find_min_sum(input2))  # 输出应为 -22

C

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <ctype.h>  int find_min_sum(const char *s) {  int sum = 0;  int num = 0;  int sign = 1;  int is_num = 0;  for (int i = 0; s[i]; i++) {  if (isdigit(s[i])) {  num = num * 10 + (s[i] - '0');  is_num = 1;  } else if (s[i] == '-') {  if (is_num) {  sum += sign * num;  num = 0;  sign = -1;  }  is_num = 0;  } else {  if (is_num) {  sum += sign * num;  num = 0;  sign = 1;  }  is_num = 0;  }  }  if (is_num) {  sum += sign * num;  }  return sum;  
}  int main() {  char input1[] = "bb1234aa";  printf("%d\n", find_min_sum(input1));  // 输出应为 1234  char input2[] = "bb12-34aa";  printf("%d\n", find_min_sum(input2));  // 输出应为 -22  return 0;  
}

C++

#include <iostream>  
#include <regex>  
#include <string>  
#include <sstream>  int find_min_sum(const std::string& s) {  std::regex e("-?\\d+");  std::sregex_iterator end;  int sum = 0;  for (std::sregex_iterator i(s.begin(), s.end(), e); i != end; ++i) {  std::sm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫之Scrapy框架系列(24)——分布式爬虫scrapy_redis完整实战【XXTop250完整爬取】

目录&#xff1a; 每篇前言&#xff1a;1.使用分布式爬取豆瓣电影信息&#xff08;1&#xff09;settings.py文件中的配置&#xff1a;&#xff08;2&#xff09;spider文件的更改&#xff1a;&#xff08;3&#xff09;items.py文件&#xff08;两个项目一致&#xff01;&…

Vue el-table 合并单元格

一般常见的就是下图这种的单列&#xff0c;上下重复进行合并。 有时候可能也会需要多行多列的合并。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&qu…

MySQL TRIM函数

TRIM函数通常用于去除字符串的开头和结尾的空格或其他指定字符。在不同的数据库系统中&#xff0c;TRIM函数的语法可能略有不同&#xff0c;以下是一些常见数据库系统中TRIM函数的用法示例&#xff1a; ### 1. MySQL 在MySQL中&#xff0c;TRIM函数的语法如下&#xff1a; sql …

3.19网络编程

select实现的TCP并发服务器 #include <myhead.h> #define SER_IP "192.168.141.134" #define SER_PORT 8888 int main(int argc, const char *argv[]) {// 1、创建一个套接字int sfd -1;sfd socket(AF_INET, SOCK_STREAM, 0);if (sfd -1){perr…

Division by Invariant Integers using Multiplication

在处理器中&#xff0c;整数除法的成本通常是整数乘法的几倍&#xff1a; 流水线式的组合乘法器通常在不到10个周期内完成操作&#xff1b;而对于整数除法则没有硬件支持&#xff0c;或者使用的迭代除法器比乘法器慢几倍。 表 1.1 比较了一些处理器上乘法和除法的时间。这张表…

php 页面中下载文件|图片

一、需求 页面中点击下载图片 二、实现 protected function pageLoad(){$filePath $_GET[file];$host $_SERVER[HTTP_HOST];$file http://.$host.$filePath;$fileName basename($filePath);$content file_get_contents($file);ob_clean();$suffixArr explode(., $file…

ceph删除坏的磁盘

在Ceph集群中&#xff0c;查看和处理坏掉的磁盘主要涉及到以下几个步骤&#xff1a;检查磁盘状态、从集群中删除坏磁盘、最后是物理或逻辑地替换坏掉的磁盘。请注意&#xff0c;处理Ceph集群的操作需要谨慎执行&#xff0c;并确保在操作前你有足够的备份和恢复计划 1. 查看集群…

数据库系统概论-练手题集合【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下数据库系统概论中的练手题&#xff0c;以供大家期末复习和考研复习的时候使用。 数据库系统概论系列文章传送门&#xff1a; 第一章 绪论 第二/三章 关系数据库和标准语言SQL 第四/五章 数据库安全性和完整性…

服务器硬件基础知识和云服务器的选购技巧

概述 服务器硬件基础知识涵盖了构成服务器的关键硬件组件和技术&#xff0c;这些组件和技术对于服务器的性能、稳定性和可用性起着至关重要的作用。其中包括中央处理器&#xff08;CPU&#xff09;作为服务器的计算引擎&#xff0c;内存&#xff08;RAM&#xff09;用于数据临…

消金公司新管理办法对谁影响更大?

来源 | 镭射财经&#xff08;leishecaijing&#xff09; 2023年9月&#xff0c;金融监管总局发布规章立法工作计划&#xff0c;首提修订《消费金融公司试点管理办法》&#xff1b;12月&#xff0c;金融监管总局在向各消金公司内部征询后&#xff0c;向社会公开消金公司管理办法…

zookeeper快速入门(合集)

zookeeper作为一个分布式协调框架&#xff0c;它的创建就是为了方便或者简化分布式应用的开发。除了服务注册与发现之外&#xff0c;它还能够提供更多的功能&#xff0c;但是对于入门来说&#xff0c;看这一篇就够了。后续会讲zookeeper的架构设计与原理&#xff0c;比如zookee…

【C++11】c++ - libc++abi.dylib:以 std::__1::system_error 类型的未捕获异常终止:互斥锁失败:参数无效

【C11】 c - libcabi.dylib:以 std::__1::system_error 类型的未捕获异常终止:互斥锁失败:参数无效 背景&#xff1a; 一个线程池的编写的时候 放在 windows使用的使用是正常的 &#xff0c;但是放到 mac 乃至 类linux环境下就会异常 上面 c - libcabi.dylib:以 std::__1::sys…

【学习】软件测试中的二八定理是什么?如何提高测试的效率和质量

软件测试领域的二八定理&#xff0c;是指在软件测试过程中&#xff0c;通常只有20%的测试用例能够发现软件中80%的错误。这一现象表明&#xff0c;软件测试的效率和效果并不成正比&#xff0c;测试用例的数量并不等于发现错误的能力。因此&#xff0c;在软件测试过程中&#xf…

Linux系统及操作 (05)

帐号控制总述 基于账户身份对资源访问进行控制 账户类别&#xff1a;用户帐号&#xff0c;组帐号识别方式&#xff1a;UID[ linux系统自动给予用户编号 ]&#xff0c;GID[ 组帐号编号 ]不同的用户/账户对资源的访问权限不同 用户帐号(UID)&#xff1a; 超级用户root (权限最大…

Android Telephony | SIM 卡管理和subId、slotId、phoneId 定义关系说明

相关业务背景 DSDS双卡双待 &#xff1a;手机可以插入两张手机卡&#xff0c;而且能同时待机&#xff0c;但是某一时刻只能有一张卡上有电话。 一个SIM卡代表一个账号&#xff0c;那么双卡手机就意味着多账户&#xff0c;需要增加多账户管理和业务处理。 账号管理&#xff1…

<Linux> 生产者消费者模型

目录 前言&#xff1a; 一、什么是生产者消费者模型 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;生产者消费者之间的关系 &#xff08;三&#xff09;生产者消费者模型特点 &#xff08;四&#xff09;生产者消费者模型的优点 二、基于阻塞队列实现生产…

Java 如何实现多线程之间的通讯和协作

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 Java 如何实现多线程之间的通讯和协作 在Java中,多线程之间的通讯和协作可以通过以下几种方式实现: 使用wait()、notify()、notifyAll()方法:这些方法是…

面试算法-44-两数之和 II - 输入有序数组

题目 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index2 < nu…

前端标准 JsDoc 代码片段注释 ( 快速生成代码片段网站 )

{ "快速单行注释": {"prefix": "z","body": [" /**"," * $1"," * param { }"," * return { }"," */"],"description": "快速注释" } } 配置之后…

嵌入式科普(12)西门子PROFINET ERTECH 200P-3路演

目录 一、路演观后感/总结 二、分享两个公众号 2.1 HMS工业网络 2.2 Omdia 三、ERTECH 200P-3资料 四、ERTECH 200P-3路演分享 嵌入式科普(12)西门子PROFINET ERTECH 200P-3路演 一、路演观后感/总结 老罗砸西门子冰箱时候的傲慢 -> 路演的谦逊 国外工程师包吃住差旅…