旧键盘打字 两数之和

news/2024/11/13 4:02:11/

💕"不要因为别人的成功而感到沮丧,你的时机会来,只要你继续努力、坚持不懈。"💕
🐼作者:不能再留遗憾了🐼
🎆专栏:Java学习🎆
🚗本文章主要内容:使用哈希表的思想解决旧键盘打字和两数字🚗
在这里插入图片描述

文章目录

  • 1.两数之和
    • 题目要求
    • 做题思路
    • 代码实现
  • 2.旧键盘打字
    • 题目要求
    • 做题思路
    • 代码实现

1.两数之和

leedcode之两数之和(难度:简单)

题目要求

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

示例 :

输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

class Solution {public int[] twoSum(int[] nums, int target) {}
}

做题思路

我们使用哈希表的key - value模型,将数组下标代表的数据作为key,数组下标作为value,在遍历数组的同时判断target - nums[i]的数据是否存在,如果存在就返回 i 以及target - i 数据所在数组的下标,如果不存在那么就将nums[i]作为key, i 作为value放入哈希表中

在这里插入图片描述

代码实现

class Solution {public int[] twoSum(int[] nums, int target) {Map<Integer, Integer> hashtable = new HashMap<Integer, Integer>();for (int i = 0; i < nums.length; i++) {if (hashtable.containsKey(target - nums[i])) {return new int[]{hashtable.get(target - nums[i]), i};}hashtable.put(nums[i], i);}return new int[2];}
}

在这里插入图片描述

2.旧键盘打字

旧键盘打字

题目要求

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

输入描述:
输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过10^5个字符的串。可用的字符包括字母[a-z, A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。
注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

输出描述:
在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。

示例:

输入
7+IE.
7_This_is_a_test.

输出
_hs_s_a_tst

做题思路

根据题目我们需要分析处当出现什么情况的时候会出现某个字母打不出来的时候.
1.如果该字母为小写字母并且当该键盘坏掉的时候
2.如果这个字母为大写的并且上档键坏掉了
当知道什么时候不打印某字母的时候,我们可以使用Set模型,Set来存放坏掉的键,第一次遍历坏掉的键,将这些坏掉的键放入Set中,并记录上档键是否坏掉.第二次遍历输入的字母,先判断是否为大写字母,如果为大写字母,那么只有当该字母键不是坏的并且上档键不是坏的时候才打印,否则就不打印,当为小写字母的时候那么就判断该字母键是否为坏的.

代码实现

import java.util.Scanner;
import java.util.HashSet;
import java.util.Set;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void func(String str1,String str2) {Set<Character> set1 = new HashSet<>();//flag来记录上档键是否为坏的Boolean flag = false;//因为坏的键盘都是以大写字母打印出来的,所以我们将它转换为小写的str1 = str1.toLowerCase();for(int i = 0; i < str1.length(); i++) {char ch = str1.charAt(i);if(ch == '+') {flag = true;}set1.add(ch);}for(int i = 0; i < str2.length(); i++) {char ch = str2.charAt(i);if(ch >= 'A' && ch <= 'Z') {ch = Character.toLowerCase(ch);if(!set1.contains(ch)) {if(!flag) {System.out.print(Character.toUpperCase(ch));}}}else {if(!set1.contains(ch)) {System.out.print(ch);}}}}public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseString str1 = in.nextLine();String str2 = in.nextLine();func(str1,str2);}}
}

在这里插入图片描述


http://www.ppmy.cn/news/99733.html

相关文章

关系类算法函数

关系类算法函数 equal 比较算法include &#xff08;是否包含&#xff09;lexicographical_compare(比较序列)最大值&#xff08;max_element&#xff09;最小值&#xff08;min_element&#xff09;mismatch(找到第一个不同位置的) equal 比较算法 includes 是不是包含 lexico…

C++爱好者的自我修养(15):数据类型转换(千字总结)

数据类型转换 1.引言2.C Primer介绍的转换规则2.1 初始化和赋值进行的转换2.2 以{}方式初始化时进行的转换&#xff08;C11&#xff09;2.3 表达式中的转换2.4 传递参数时的转换2.5 强制类型转换 3.强制类型转换运算符&#xff08;来自GPT-3.5-turbo&#xff09;3.1 static_cas…

LockSupport

LockSupport是一个编程工具类&#xff0c;主要是为了阻塞和唤醒线程用的。使用它我们可以实现很多功能&#xff0c;今天主要就是对这个工具类的讲解&#xff0c;希望对你有帮助&#xff1a; 一、LockSupport简介 1、LockSupport是什么 刚刚开头提到过&#xff0c;LockSuppor…

115.删除有序数组中的重复项 removeDuplicatesFromSortedArray

文章目录 题目描述解题思路代码详解运行截图 题目描述 题目链接 给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元…

Postman新手教程

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶 目录 文章目录 一、Postman背景介绍 二、Postman下载地址 三、Postman简单使用 一、Postman背景介绍 Postman是Chrome插件类产品中的代表产品之一&#xff0c;这款网页调试工具不仅可以调…

数据结构——二叉树

思维导图&#xff1a; 目录 一&#xff0c;什么是二叉树 二 &#xff0c;二叉树的构建 2.1二叉树的内部结构 2.2手撕二叉树 2.3求二叉树的节点个数 2.3计算二叉树的叶子节点 2.4二叉树的高度 2.5计算第K层有多少个节点 2.6 二叉树的打印 2.6寻找二叉树的节点值 2.7二叉…

嵌入式C语言关键字(const、static、volitatile)

const关键字 C语言中const修饰通常是用来声明常量&#xff0c;并声明常量的值不能修改。当涉及指针变量时情况就会变得更加有趣&#xff0c;需要特别注意。因为有两样东西都有可能成为常量—一种是用来限定指向的空间的值不可修改&#xff1b;另一种是限定指针不可修改。下面是…

牛客HJ43迷宫问题 - 创建智能体通过策略自己找路

文章目录 问题描述思路代码C 问题描述 描述 定义一个二维数组 N*M &#xff0c;如 5 5 数组下所示&#xff1a; int maze[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫&#xff0c;其中的1表示墙壁&#xff0…