分界线-积木游戏 demo

news/2024/7/7 21:22:21

 

目录

匿名信

题目描述:

输入描述

输出描述:

示例:

Java实现 (期待看官能够修复一下, 害):

二、积木游戏

题目描述:

输入描述

输出描述

补充说明

示例

Java代码实现


匿名信

题目描述:

电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字
剪切下来,剪拼成匿名信。
现在有一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。
但为了增加文章的混淆度,只需满足每个单词中字母数量一致即可,不关注每个字母的顺序。
解释:单词 'on' 允许通过单词 'no' 进行替代。
报纸代表 newspaper , 匿名信代表 anonymousLetter , 求报纸内容是否可以拼成匿名信。

输入描述

第一行输入 newspaper 内容,包括 1 - N 个字符串,用空格分开
第二行输入 anonymousLetter 内容,包括 1 - N 个字符串,用空格分开
1 newspaper anonymousLetter 的字符串由小写英文字母组成且每个字母只能使用一次
2 newspaper 内容中的每个字符串字母顺序可以任意调整 , 但必须保证字符串的完整性 ( 每个字符串不
能有多余字母 )
3 1 < N < 100 1 <= newspaper . length anonymousLetter . length <= 10

输出描述:

如果报纸可以拼成匿名信返回 true ,否则返回 false

示例:

 
 
示例 1
输入 :
ab cd
ab
输出: true
示例 2
输入:
ab ef
aef
输出: false
示例 3
输入:
ab bcd ef
cbd fe
输出: true
示例 4
输入:
ab bcd ef
cd ef
输出: false
示例 5
输入:
wood wood wood
wodo wdoo
输出: true
示例 6
输入:
wood
wodo wood
输出: false

Java实现 (期待看官能够修复一下, 害):

public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String newspaper = scanner.nextLine();
        String anonymous = scanner.nextLine();
        String[] newspaperArray = newspaper.split(" ");
        String[] anonymousArray = anonymous.split(" ");
        TreeSet<String> set = new TreeSet<>();
        for (String news : newspaperArray) {
            char[] charArray = news.toCharArray();
            Arrays.sort(charArray);
            String value = String.valueOf(charArray);
            if (!set.contains(value)) {
                set.add(value);
            }
        }
        boolean canAppend = true;
        for (String anonymousStr : anonymousArray) {
            char[]  anonymousCharArray = anonymousStr.toCharArray();
            Arrays.sort(anonymousCharArray);
            String sortedAnonymous = String.valueOf(anonymousCharArray);
            //set里面没有拼出来 就返回false
            if (!set.contains(sortedAnonymous)) {
                canAppend = false;
                break;
            }
        }
        System.out.println(canAppend ? "true" : "false");
    }

二、积木游戏

题目描述:

小华和小薇一起通过玩积木游戏学习数学。
他们有很多积木,每个积木块上都有一个数字,积木块上的数字可能相同。
小华随机拿一些积木挨着排成一排,请小薇找到这排积木中数字相同且所处位置最远的 2 块积木块,计
算他们的距离。
小薇请你帮忙替解决这个问题。

输入描述

第一行输入为 N ,表示小华排成一排的积木总数。
接下来 N 行每行一个数字,表示小华排成一排的积木上数字。

输出描述

相同数字的积木的位置最远距离;
如果所有积木数字都不相同,请返回 - 1.

补充说明

0 <= 积木上的数字 < 10 ^9
1 <= 积木长度 <= 10 ^5

示例

示例 1
输入:
5
1
2
3
1
4
输出: 3
说明:一共有 5 个积木,第 1 个积木和第 4 个积木数字相同,其距离为 3 ;
输入:
2
1
2
输出: - 1
说明:一共有 2 个积木,没有积木数字相同,返回 - 1 ;

Java代码实现

   public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int N = sc.nextInt();
            int[] nums = new int[N];
            for (int i = 0; i < N; i++) {
                nums[i] = sc.nextInt();
            }
            System.out.println(findMaxDistance(nums));
        }

        public static int findMaxDistance(int[] nums) {
            Map<Integer, Integer> map = new HashMap<>();
            int maxDistance = -1;
            for (int i = 0; i < nums.length; i++) {
                if (map.containsKey(nums[i])) {
                    //这段代码是计算最大距离的。
                    //首先,定义了一个变量maxDistance来存储最大距离,初始值为-1。
                    //然后,使用一个循环遍历输入的积木上的数字。在每次循环中,通过map.get(nums[i])获取当前数字在HashMap中对应的位置。如果该位置存在(即之前已经出现过这个数字),则计算当前位置与之前出现该数字的位置之间的距离,并更新maxDistance为较大的那个值。如果该位置不存在(即之前没有出现过这个数字),则将当前位置存入HashMap中。
                    //最后,返回maxDistance作为结果。
                    maxDistance = Math.max(maxDistance, i - map.get(nums[i]));
                } else {
                    map.put(nums[i], i);
                }
            }
            return maxDistance;
        }

        


http://lihuaxi.xjx100.cn/news/1555924.html

相关文章

echarts散点图的圆点设置成不同的自定义图片且使用本地静态资源图片的写法

现在要实现的功能是&#xff1a; 散点图的每个点都不再是小圆点而是一张图片&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 即&#xff1a; 散点图的圆点设置成不同的自定义图片、且使用本地静态资源图片的写法 首先举个栗子&#xff0c;假设有个echarts散点…

C++跳坑记:位移超出范围的处理

在C编程中&#xff0c;数据类型的选择不仅影响内存占用和性能&#xff0c;还可以对某些操作的结果产生意想不到的影响。今天&#xff0c;我将分享一个关于C在不同变量类型下位移操作结果的发现。 位移操作是C中常见的对整数的高效操作之一。然而&#xff0c;我们可能会忽视一个…

【Linux旅行记】探究操作系统是如何进行管理的!

文章目录 什么是操作系统&#xff1f;操作系统概念操作系统的目的底层硬件驱动程序操作系统理解系统调用接口 操作系统是如何进行管理的&#xff1f;什么是管理&#xff1f;操作系统是如何管理硬件信息呢&#xff1f; &#x1f340;小结&#x1f340; &#x1f389;博客主页&am…

代理IP与Socks5代理:跨界电商时代的网络安全与数据引擎

第一部分&#xff1a;跨界电商与出海战略 1.1 跨界电商的崛起 跨界电商是指企业通过互联网销售跨足不同国家和地区市场的产品和服务。它已经成为全球贸易的重要组成部分&#xff0c;为企业提供了全球市场的无限机会。 1.2 出海战略的重要性 出海战略是企业拓展国际市场的核…

Test?

加醋 红色

[NLP] LLM---<训练中文LLama2(三)>对LLama2进行中文预料预训练

预训练 预训练部分可以为两个阶段&#xff1a; 第一阶段&#xff1a;冻结transformer参数&#xff0c;仅训练embedding&#xff0c;在尽量不干扰原模型的情况下适配新增的中文词向量。第二阶段&#xff1a;使用 LoRA 技术&#xff0c;为模型添加LoRA权重&#xff08;adapter&…

服务器搭建(TCP套接字)-select版(服务端)

一、select头文件 #include <sys/select.h>二、select原型 int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);select() 是一个系统调用函数&#xff0c;用于在多个文件描述符上进行 I/O 多路复用。通过 select() …

vue一直自动换行问题解决

html换行主要是由于< div >标签引起的&#xff0c;而vue的一些前端组件本身就会自带< div >&#xff0c;比如el-input的标签拆分出来之后就形成了如下的内容 因此之前我采用 <el-form-item prop"code" v-if"captchaOnOff"><el-inpu…