旧键盘打字 两数之和

简介: 旧键盘打字 两数之和的详细题解

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

@[toc]

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 处理多个 case
            String str1 = in.nextLine();
            String str2 = in.nextLine();
            func(str1,str2);
        }
    }
}
相关文章
|
3月前
1033 旧键盘打字 (20 分)
1033 旧键盘打字 (20 分)
|
3月前
1029 旧键盘 (20 分)
1029 旧键盘 (20 分)
|
4月前
|
Shell 定位技术 开发工具
[oeasy]python0015_键盘改造_将esc和capslock对调_hjkl_移动_双手正位
[oeasy] python0015_键盘改造_将 esc 和 capslock 对调_hjkl_移动_双手正位
38 3
如何模拟按下“计算器”的“7”键?
如何模拟按下“计算器”的“7”键?
|
小程序 开发工具
如何在小游戏使用键盘进行输入
本文主要内容是在微信小游戏制作工具中使用“键盘”插件,来实现玩家在小游戏中通过键盘进行输入操作的功能。 如果你没有任何的游戏开发经验,欢迎观看我的“人人都能做游戏”系列视频教程,它会手把手的教你做出自己的第一个小游戏。 在游戏中经常需要使用到键盘,让玩家能够在游戏中进行输入操作。今天就分享一下如何在微信小游戏制作工具中使用键盘进行输入。
495 0
|
Windows
scrlk键是什么意思(电脑键盘每个按键的作用详细图解)
scrlk键是什么意思(电脑键盘每个按键的作用详细图解)
4465 0
|
C++
【力扣·每日一题】1629. 按键持续时间最长的键 (C++ 模拟)
【力扣·每日一题】1629. 按键持续时间最长的键 (C++ 模拟)
50 0
【力扣·每日一题】1629. 按键持续时间最长的键 (C++ 模拟)
PAT乙级(散列) PAT.B1033——旧键盘打字
PAT乙级(散列) PAT.B1033——旧键盘打字
78 0
JavaScrip 随机猜数字游戏
JavaScrip 随机猜数字游戏
71 0