JAVA练习57- 罗马数字转整数、位1的个数

news/2024/4/19 20:57:18/文章来源:https://blog.csdn.net/qq_58210976/article/details/129145214

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、题目1-罗马数字转整数

1.题目描述

2.思路与代码

2.1 思路

2.2 代码

二、题目2-位1的个数

1.题目描述

2.思路与代码

2.1 思路

2.2 代码

总结


前言

提示:这里可以添加本文要记录的大概内容:

2月21日练习内容


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目1-罗马数字转整数

1.题目描述

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000


例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做  XXVII, 即为 XX + V + II 。

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。 
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。

示例 1:

输入: s = "III"
输出: 3


示例 2:

输入: s = "IV"
输出: 4


示例 3:

输入: s = "IX"
输出: 9


示例 4:

输入: s = "LVIII"
输出: 58
解释: L = 50, V= 5, III = 3.


示例 5:

输入: s = "MCMXCIV"
输出: 1994
解释: M = 1000, CM = 900, XC = 90, IV = 4.

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/roman-to-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2.思路与代码

2.1 思路

1.创建一个方法,用来获取字符串中某个字符所对应的值

2.创建两个变量,一个是数的和sum,另一个是前一个字符所对应的值pre

3.for循环,索引i从1开始,到字符串的长度s.length()-1结束,

4.获取当前i字符所对应的值,用它与上一个字符的值比较,若该字符的值比上一个字符的值大,则sum -= pre;若小,则sum += pre;接着更新pre = num(当前i值)进入下一次循环

5.最后将最后一个元素的值与sum相加,输出sum即可

2.2 代码

代码如下(示例):

class Solution {public int romanToInt(String s) {//和int sum = 0;//上一个字符所对应的值int pre = getValue(s.charAt(0));//遍历字符串取值for(int i = 1;i < s.length();i ++){//当前i处的值int num = getValue(s.charAt(i));//如果上一个字符所对应的值比当前i处字符所对应的值小if(pre < num){sum -= pre;}else{sum += pre;}//更新prepre = num;}//将最后一个字符元素所对应的值加入sumsum += pre;return sum;}//获取对应字符的值private int getValue(char ch){switch(ch){case 'I':return 1;case 'V':return 5;case 'X':return 10;case 'L':return 50;case 'C':return 100;case 'D':return 500;case 'M':return 1000;default:return 0;}}
}

二、题目2-位1的个数

1.题目描述

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量)。

提示:

请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。
在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在 示例 3 中,输入表示有符号整数 -3。
 

示例 1:

输入:n = 00000000000000000000000000001011
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。


示例 2:

输入:n = 00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。


示例 3:

输入:n = 11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/number-of-1-bits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2.思路与代码

2.1 思路

1.while循环遍历,

2.count += n & 1;将n的最后一位加给count,如果最后一位是1,则count+1,如果不是1,因为该数字是二进制,所以count+0,数字无变化

3。接着将数字进行无符号右移

4.输出count

2.2 代码

代码如下(示例):

public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {//计数器int count = 0;while(n != 0){//n&1是获取n的最右一位count += n & 1;//n>>>1是无符号右移n = n >>> 1;}return count;}
}


总结

提示:这里对文章进行总结:
 

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

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

相关文章

0/1 nodes are available: 1 node(s) didn‘t match Pod‘s node affinity.

主要是需要确认你的yaml文件中是否有nodeSelector的配置&#xff0c;一般是因为k8s集群中没有相应的node节点匹配导致 这个错误消息表明您正在尝试在不符合Pod的节点亲和性规则的节点上运行Pod。这通常是由于节点选择器或节点亲和性规则设置不正确引起的。 以下是一些可能导致…

前端零基础入门-002-集成开发环境

本篇目标 了解市面上常用的前端集成开发环境&#xff08;ide&#xff09;掌握 HBuiberX 的使用&#xff1a;下载安装&#xff0c;新建项目、网页、运行网页。 内容摘要 本篇介绍了市面上流行的几款前端集成开发环境&#xff08;ide&#xff09;&#xff0c;并介绍了 Hbuilde…

微软Docker学习记录(第二单元)

文章目录什么是容器&#xff1f;什么是软件容器化&#xff1f;什么是 Docker&#xff1f;Docker 体系结构Docker 引擎Docker 客户端Docker 服务器Docker 对象原文链接&#xff1a; https://learn.microsoft.com/zh-cn/training/modules/intro-to-docker-containers以下原文部分…

Softing dataFEED OPC Suite Extended新版本支持从XML文件中读取生产数据

Softing dataFEED OPC Suite Extended V5.25的新功能——“文件读取&#xff08;File Read&#xff09;”&#xff0c;支持访问XML文件中可用的过程数据。 &#xff08;文件读取功能支持获取由XML文件提供的过程数据&#xff09;dataFEED OPC Suite Extended是用于OPC通信和云连…

技术干货!如何玩转Salesforce测试类 (Test Class)?

测试类主要用于评估其他代码片段&#xff0c;确保一切正常且可靠地运行。这可以作为一种早期预警系统&#xff0c;提醒开发人员出现了错误或问题。 不同类型的程序化测试 测试类可以分为多种不同的类型&#xff0c;这改变了我们编写测试的方式及其预期结果。对于Apex测试类&…

R语言实现可理解的随机森林模型(Random Forest)——iml包

Random Forest 解释模型1. 介绍2. 理解随机森林运行机理2.1导入需要的包2.2 构建随机森林模型2.3 RF特征重要性&#xff1a;2.4 特征对预测结果的影响2.5 交互作用2.6 替代模型&#xff08;Decision tree surrogate model&#xff09;2.71. 介绍 机器学习模型通常可以很好地进…

儿童袖套上架美国亚马逊CPC认证

袖套&#xff0c;也称套袖。是戴在袖管外的套子&#xff0c;旨在保护衣服的袖管。通常戴时松垂于另外一只衣袖外面的袖子。美国CPC认证简介&#xff1a;CPC认证是Children’s Product Certificate的英文简称&#xff0c;CPC证书就类似于国内的质检报告&#xff0c;在通过相关检…

内网渗透(四十五)之横向移动篇-WinRM远程执行命令横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

PrivateLoader PPI服务发现RisePro恶意软件窃取分发信息

称为PrivateLoader的按安装付费&#xff08;PPI&#xff09;软件下载器服务正用于恶意软件RisePro的信息窃取。Flashpoint 于 2022 年 12月13日发现了新的窃取者&#xff0c;此前发现了在名为Russian Market的非法网络犯罪市场上使用该恶意软件泄露的“几组日志”。RisePro是一…

IDEA高效插件和设置

安装好Intellij idea之后&#xff0c;进行如下的初始化操作&#xff0c;工作效率提升十倍。 一. 安装插件 1. Codota 代码智能提示插件 只要打出首字母就能联想出一整条语句&#xff0c;这也太智能了&#xff0c;还显示了每条语句使用频率。 原因是它学习了我的项目代码&…

墨菲安全参与信息通信软件供应链安全社区成员大会并获自主研发创新成果奖

2023年2月16日&#xff0c;首届ICT软件供应链安全治理论坛暨信息通信软件供应链安全社区第二届成员大会在北京成功举办&#xff0c;多位业界顶级专家与工业和信息化部网络安全管理局相关领导出席&#xff0c;为现场观众分享了关于软件供应链可持续性与安全治理行业的前瞻与思考…

Apache Shiro与Spring Security对比

Apache Shiro VS Spring Security 1.Spring Security 官方文档&#xff1a;https://spring.io/projects/spring-security#overview介绍&#xff1a; Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spr…

CAS底层原理及ABA问题

一、案例CAS是Java中Unsafe类里面的一个方法&#xff0c;它的全称是叫CompareAndSwap比较并交换的一个意思&#xff0c;它的主要功能是能够去保证在多线程的环境下对于共享变量修改的一个原子性。例如&#xff0c;比如说像这样一个场景&#xff0c;有一个成员变量state&#xf…

【分享】订阅卖家云集简云连接器同步销售出库数据至卖家云系统

方案场景 在企业进行数字化转型过程中&#xff0c;数据割裂是企业面临的最大困难&#xff0c;钉钉作为现企业流行的常用办公系统&#xff0c;与第三方ERP系统之间存在着数据割裂的现象&#xff0c;例如&#xff0c;钉钉与卖家云系统&#xff0c;企业员工原来的办公方式是在钉钉…

Vue基础14之TodoList组件自定义事件、全局事件总线、TodoList全局事件总线

Vue基础14TodoList-组件自定义事件先改Header和Footer子组件&#xff0c;List先不考虑App.vueMyHeader.vueMyFooter.vue全局事件总线实现思路正规写法main.jsApp.vueStudent.vueSchool.vue总结&#xff1a;全局事件总线&#xff08;GlobalEventBus&#xff09;TodoList案例&…

修复 K8s SSL/TLS 漏洞(CVE-2016-2183)指南

作者&#xff1a;老 Z&#xff0c;中电信数智科技有限公司山东分公司运维架构师&#xff0c;云原生爱好者&#xff0c;目前专注于云原生运维&#xff0c;云原生领域技术栈涉及 Kubernetes、KubeSphere、DevOps、OpenStack、Ansible 等。 前言 测试服务器配置 主机名IPCPU内存系…

5.10 BGP属性-MED

5.4.4配置BGP MED属性控制选路 1. 实验目的 熟悉BGP MED属性控制选路的应用场景掌握BGP MED属性控制选路的配置方法2. 实验拓扑 实验拓扑如图5-10所示: 图5-10:配置BGP MED属性控制选路 3. 实验步骤 (1) 网络连通性 R1…

QMap 判断是否value是否已经存在,结合Sleep函数测试

网上查了资料&#xff0c;基本说的都是通过.value判断是否已经之前的key值&#xff0c;但是尝试.了一下发现有.key的函数&#xff0c;对比着来就感觉这个函数是用来判断是否已经存在value值&#xff0c;于是开始百度也几乎没有找到相关资料&#xff0c;只好自己看官方文档&…

【高速电路01】高速电路入门知识

1.什么是高速电路&#xff1f; 一般情况下&#xff0c;我们在讨论电路的特性时&#xff0c;一个基本的常识&#xff0c;是认为一条导线上各处的电压&#xff08;或者说信号&#xff09;在同一时刻是相等的。 以上结论在低速电路时是没问题的&#xff0c;但是&#xff0c;实际…

R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作技术应用第一章、理论篇以问题导入的方式&#xff0c;深入掌握原理基础什么是MaxEnt模型&#xff1f;MaxEnt模型的原理是什么&#xff1f;有哪些用途&#xff1f;MaxEnt运行需要哪些输入文件…