Java每日一练(20230420)

news2024/9/24 4:24:11

目录

1. 罗马数字转整数  🌟

2. 电话号码的字母组合  🌟🌟

3. 排列序列  🌟🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 罗马数字转整数

罗马数字包含以下七种字符: I, V, X, LCD 和 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:

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

示例 2:

输入: num = "IV"
输出: ​​​​​​​4

示例 3:

输入: num = "IX"
输出: ​​​​​​​9

示例 4:

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

示例 5:

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

提示:

  • 1 <= num <= 3999

出处:

https://edu.csdn.net/practice/26046518

代码:

import java.util.*;
public class romanToInt {
    public static class Solution {
        public int romanToInt(String s) {
            int n = 0;
            for (int i = 0; i < s.length();) {
                char c = s.charAt(i);
                if (c == 'I') {
                    if (i + 1 < s.length()) {
                        if (s.charAt(i + 1) == 'V') {
                            n += 4;
                            i += 2;
                        } else if (s.charAt(i + 1) == 'X') {
                            n += 9;
                            i += 2;
                        } else {
                            n += 1;
                            i++;
                        }
                    } else {
                        n += 1;
                        i++;
                    }
                } else if (c == 'X') {
                    if (i + 1 < s.length()) {
                        if (s.charAt(i + 1) == 'L') {
                            n += 40;
                            i += 2;
                        } else if (s.charAt(i + 1) == 'C') {
                            n += 90;
                            i += 2;
                        } else {
                            n += 10;
                            i++;
                        }
                    } else {
                        n += 10;
                        i++;
                    }
                } else if (c == 'C') {
                    if (i + 1 < s.length()) {
                        if (s.charAt(i + 1) == 'D') {
                            n += 400;
                            i += 2;
                        } else if (s.charAt(i + 1) == 'M') {
                            n += 900;
                            i += 2;
                        } else {
                            n += 100;
                            i++;
                        }
                    } else {
                        n += 100;
                        i++;
                    }
                } else if (c == 'V') {
                    n += 5;
                    i++;
                } else if (c == 'L') {
                    n += 50;
                    i++;
                } else if (c == 'D') {
                    n += 500;
                    i++;
                } else if (c == 'M') {
                    n += 1000;
                    i++;
                }
            }
            return n;
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        String str = "III";
        System.out.println(s.romanToInt(str));
        str = "IV";
        System.out.println(s.romanToInt(str));
        str = "IX";
        System.out.println(s.romanToInt(str));
        str = "LVIII";
        System.out.println(s.romanToInt(str));
        str = "MCMXCIV";
        System.out.println(s.romanToInt(str));
    }
}

输出:

3
4
9
58
1994


2. 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例 1:

输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = ""
输出:[]

示例 3:

输入:digits = "2"
输出:["a","b","c"]

提示:

  • 0 <= digits.length <= 4
  • digits[i] 是范围 ['2', '9'] 的一个数字。

出处:

https://edu.csdn.net/practice/26046519

代码:

import java.util.*;
public class romanToInt {
    public static class Solution {
        public List<String> letterCombinations(String digits) {
            Character[][] letters = { {}, {}, { 'a', 'b', 'c' }, { 'd', 'e', 'f' }, { 'g', 'h', 'i' }, { 'j', 'k', 'l' },
                    { 'm', 'n', 'o' }, { 'p', 'q', 'r', 's' }, { 't', 'u', 'v' }, { 'w', 'x', 'y', 'z' }, };
            List<List<Character>> combinations = new ArrayList<>();
            for (int i = 0; i < digits.length(); i++) {
                Character d = digits.charAt(i);
                int index = Character.getNumericValue(d);
                Character[] letter = letters[index];
                //System.out.println(d);
                if (i == 0) {
                    for (int j = 0; j < letter.length; j++) {
                        List<Character> c = new ArrayList<>();
                        c.add(letter[j]);
                        combinations.add(c);
                    }
                } else {
                    List<List<Character>> added = new ArrayList<>();
                    for (int j = 0; j < combinations.size(); j++) {
                        List<Character> c = combinations.get(j);
                        List<Character> origin_c = new ArrayList<>(c);
                        for (int k = 0; k < letter.length; k++) {
                            Character l = letter[k];
                            if (k == 0) {
                                c.add(l);
                            } else {
                                List<Character> new_c = new ArrayList<>(origin_c);
                                new_c.add(l);
                                added.add(new_c);
                            }
                        }
                    }
                    combinations.addAll(added);
                }
            }
            List<String> output = new ArrayList<>();
            for (int i = 0; i < combinations.size(); i++) {
                List<Character> c = combinations.get(i);
                StringBuilder sb = new StringBuilder();
                for (Character l : c) {
                    sb.append(l);
                }
                output.add(sb.toString());
            }
            return output;
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        String str = "23";
        System.out.println(s.letterCombinations(str));
        str = "";
        System.out.println(s.letterCombinations(str));
        str = "2";
        System.out.println(s.letterCombinations(str));
    }
}

输出:

[ad, bd, cd, ae, af, be, bf, ce, cf]
[]
[a, b, c]


3. 排列序列

给出集合 [1,2,3,...,n],其所有元素共有 n! 种排列。

按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下:

  1. "123"
  2. "132"
  3. "213"
  4. "231"
  5. "312"
  6. "321"

给定 n 和 k,返回第 k 个排列。

示例 1:

输入:n = 3, k = 3
输出:"213"

示例 2:

输入:n = 4, k = 9
输出:"2314"

示例 3:

输入:n = 3, k = 1
输出:"123"

提示:

  • 1 <= n <= 9
  • 1 <= k <= n!

以下程序实现了这一功能,请你填补空白处内容:
```Java
class Solution {
    public String getPermutation(int n, int k) {
        StringBuilder sb = new StringBuilder();
        List<Integer> candidates = new ArrayList<>();
        int[] factorials = new int[n + 1];
        factorials[0] = 1;
        int fact = 1;
        for (int i = 1; i <= n; ++i) {
            candidates.add(i);
            fact *= i;
            factorials[i] = fact;
        }
        k -= 1;
        ____________________;
        return sb.toString();
    }
}
```

出处:

https://edu.csdn.net/practice/26046520

代码:

import java.util.*;
public class getPermutation {
    public static class Solution {
        public String getPermutation(int n, int k) {
            StringBuilder sb = new StringBuilder();
            List<Integer> candidates = new ArrayList<>();
            int[] factorials = new int[n + 1];
            factorials[0] = 1;
            int fact = 1;
            for (int i = 1; i <= n; ++i) {
                candidates.add(i);
                fact *= i;
                factorials[i] = fact;
            }
            k -= 1;
    for (int i = n - 1; i >= 0; --i) {
        int index = k / factorials[i];
        sb.append(candidates.remove(index));
        k -= index * factorials[i];
    }
            return sb.toString();
        }
    }
    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.getPermutation(3,3));
        System.out.println(s.getPermutation(4,9));
        System.out.println(s.getPermutation(3,1));
    }
}

输出:

213
2314
123


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

 主页:https://hannyang.blog.csdn.net/ 

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

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

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

相关文章

java基础——Map

Map 第一章 Map集合 1.1 概述 Java提供了专门的集合类用来存放键值对关系的对象&#xff0c;即java.util.Map接口。 我们通过查看Map接口描述&#xff0c;发现Map接口下的集合与Collection接口下的集合&#xff0c;它们存储数据的形式不同&#xff0c;如下图。 Collection中…

Java学习之匿名内部类(非常重要)

目录 一、匿名内部类介绍 基本语法 二、举例说明 1.传统方式实现接口 2.使用匿名内部类进行简化 一、匿名内部类介绍 1.匿名内部类也是类 2.匿名内部类也是内部类 3.匿名内部类没有名字&#xff08;名字存在于JVM中&#xff0c;不会显示出来&#xff09; 4.匿名内部类同时…

Pytorch深度学习笔记(八)处理多维度特征的输入

目录 1.概述 2. 处理多维度特征的输入 注&#xff1a;不同的激活函数&#xff08;sigmoid函数&#xff09;&#xff0c; 绘制不同的图表 推荐课程&#xff1a;07.处理多维特征的输入_哔哩哔哩_bilibili 1.概述 一个八维数据集&#xff1a; 数据集&#xff0c;每一行称为一个…

完整搭建 SpringCloud 项目

目录 1、数据库表结构设计 2、项目结构设计搭建 &#xff08;1&#xff09;创建父工程&#xff08;SpringBoot 类型&#xff09; &#xff08;2&#xff09;其他功能模块搭建 &#xff08;3&#xff09;创建 eureka &#xff08;4&#xff09;创建common 模块 &#xff08;5&…

jmeter常用组件1

常用的组件 常用的组件1&#xff0c;配置元件 1.HTTP请求默认值2.HTTP信息头管理器3.HTTP Cookie管理器4.用户自定义变量5.csv数据导入 2&#xff0c;集合点3&#xff0c;后置处理器 1.debug处理器2.json提取器 本文永久更新地址: 1&#xff0c;配置元件 1.HTTP请求默认值 在…

ASP.NET Core MVC 从入门到精通之Razor语法

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

PyQt在界面/子界面中添加横线

问题&#xff1a; 自己写个了处理数据的小程序&#xff0c;想要在不同的部分之间做个区域划分&#xff0c;使用实线或者虚线标记。 找了几个界面方法&#xff1a;1.使用画图QPainter,画所需要的线。 2.添加按钮&#xff0c;将按钮设置成线的形式 这两种方式都不适合我这个界…

着色器语言 GLSL (opengl-shader-language)入门大全

GLSL 中文手册 基本类型: 类型说明void空类型,即不返回任何值bool布尔类型 true,falseint带符号的整数 signed integerfloat带符号的浮点数 floating scalarvec2, vec3, vec4n维浮点数向量 n-component floating point vectorbvec2, bvec3, bvec4n维布尔向量 Boolean vectori…

广告投放ROI如何计算?实现广告效果最大化

大家好&#xff01;我是东哥&#xff0c;一个专注于跨境电商的小商家。今天&#xff0c;我要和大家分享一下广告投放中的一个关键指标——ROI&#xff0c;也就是投资回报率。这个指标非常重要&#xff0c;因为它可以帮助我们评估广告的效果&#xff0c;让我们知道我们的广告投放…

SpringCloud消息驱动——Stream

Stream 本专栏学习内容来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 SpringCloud Stream是SpringCloud的消息驱动&#xff0c;之前的微服务学的好好的&#xff0c;为什么会突然冒出一个这么个东西来增加我们的学习量呢&#xff1f; 一听到消息&#xff0c;那…

u盘文件不见但还占用容量文件办法?

将U盘插入电脑的时候为什么会出现“U盘文件突然不见但还占用空间”的提示框呢?遇到这个问题时又该怎么处理呢?别慌&#xff0c;下面小编就来给大家演示一下子解决U盘文件突然不见但还占用空间这个问题的解决方法。 u盘文件不见但还占用容量文件办法&#xff1f; u盘文件不见但…

短视频平台-小说推文(最右)推广任务详情

最右推荐书单 https://nr6mwfrzw8.feishu.cn/sheets/shtcnVgsBY18qft FqBG9b8eYFnc?sheetpfiUaC 复制链接到飞书或浏览器打开 最右会员 1.1关键词 最右关键词审核时间周一~周日 上午:10点前提交&#xff0c;15:00点前可查下午:15点前提交&#xff0c;20:00点前可查注意: …

盘点几款还不错的企业网盘产品

企业网盘的出现&#xff0c;为企业提供文件安全管理&#xff0c;团队协作服务&#xff0c;解决了便捷性与安全性等问题&#xff0c;受到了企业的青睐。市面上的企业网盘工具也是五花八门&#xff0c;我们该如何选择适合自己团队的网盘工具呢&#xff1f; 本文盘点了几款还不错的…

2023年软件测试的前景?测试工程师技能提升,进阶自动化测试...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 2023年软件测试行…

中国社科院与美国杜兰大学金融管理硕士项目——努力撑起未来的一片天

牛顿说&#xff1a;如果说我看得比别人更远些&#xff0c;那是因为我站在巨人的肩膀上。人类文明浩如烟海&#xff0c;我们每个人都是吸收着前人的精神食粮长大。父母也是尽全力地给我们提供好的学习环境&#xff0c;让我们站在他们的肩头上&#xff0c;青出于蓝而胜于蓝。如今…

新互联网人必学-产品经理课无密为伊消得人憔悴

新互联网人必学-产品经理课 download&#xff1a;https://www.666xit.com/3832/ 产品经理&#xff1a;连接用户需求和产品设计的重要角色 随着移动互联网的迅猛发展&#xff0c;产品经理已成为越来越多IT公司中不可或缺的职位。作为一名产品经理&#xff0c;他所扮演的角色是…

你掌握了stream流的全部新特性吗?

我们知道很早之前java8对于之前的版本更新了许多 新的支持&#xff0c;比如lamda函数式接口的支持&#xff0c;支持更多函数式接口的使用&#xff0c;对链表&#xff0c;数组&#xff0c;队列&#xff0c;集合等实现了Collectio接口的数据结构提供了StreamSupport.stream()支持…

Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序

文章目录 基础知识-Windows下版本控制器(SVN)3、Subversion 安装与配置3.1 验证是否安装成功。3.2 配置版本库3.3 启动服务器端程序 基础知识-Windows下版本控制器(SVN) 3、Subversion 安装与配置 TortoiseSVN安装与配置网上资料太多了&#xff0c;这里就不阐述了。 3.1 验证是…

LinkedHashMap如何实现LRU缓存淘汰策略?

本文目录 1.LRU是什么&#xff1f;2.如何使用LinkedHashMap实现LRU?3.LinkedHashMap源码分析3.1 LinkedHashMap简介3.2 继承体系3.3 内部数据存储结构3.4源码解析属性&#xff1a;构造方法&#xff1a;afterNodeInsertion(boolean evict)方法afterNodeAccess(Node e)方法after…

一种应用于车载系统的GPS接收机射频前端的设计

一种应用于车载系统的GPS接收机射频前端的设计 GPS&#xff08;GLOBLE POSITIONING SYSTEM&#xff09;是一种可以定时和测距的空间交会定点导航系统&#xff0c;它可以向全球用户提供连续、实时、高精度的三维位置、三维速度和实践信息。GPS提供两种服务&#xff1a;标准定位…