旧键盘打字 两数之和

这篇具有很好参考价值的文章主要介绍了旧键盘打字 两数之和。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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);
        }
    }
}

旧键盘打字 两数之和文章来源地址https://www.toymoban.com/news/detail-482330.html

到了这里,关于旧键盘打字 两数之和的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • leetcode 1两数之和

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums =

    2024年02月01日
    浏览(46)
  • leetcode - 01两数之和

    时间复杂度读 O ( n 2 ) O(n^2) O ( n 2 ) 空间复杂度 O ( 1 ) O(1) O ( 1 )

    2024年02月12日
    浏览(31)
  • leetcode--1--两数之和

            给定一个整数数组  nums  和一个整数目标值  target ,请你在该数组中找出  和为目标值  target   的那  两个  整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。

    2024年04月25日
    浏览(24)
  • LeetCode两数之和

    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums =

    2024年02月11日
    浏览(30)
  • 【力扣】1. 两数之和

    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回

    2024年02月16日
    浏览(23)
  • 面试热题(两数之和)

    给定一个整数数组  nums  和一个整数目标值  target ,请你在该数组中找出  和为目标值  target   的那  两个  整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。        

    2024年02月13日
    浏览(29)
  • 1. 两数之和

    给定一个整数数组 nums 和一个整数目标值 target ,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 示例 2: 示例

    2024年02月15日
    浏览(26)
  • leetcode1.两数之和

    个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【LeetCode】 🍓希望我们一起努力、成长,共同进步。 题目链接 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,

    2024年02月11日
    浏览(29)
  • 【刷题】leetcode 1 . 两数之和

    题目链接 最简单的思想: 遍历 从头开始逐个遍历。 首先选定 加数1 然后寻找 加数2 ,如果两者之和满足条件 target 。返回相应下标即可! 提交! 过啦!!! 但是看看运算时间,居然这么慢!确实咱们的算法时间复杂度是O(n^2),不够快速。 才打败了 69% 的用户。我们不能满足

    2024年01月16日
    浏览(30)
  • leetcode1. 两数之和

    题目:leetcode1. 两数之和 描述: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返

    2024年02月13日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包