Day06_HashMap_侯一鸣

Task01

问题

给定一个字符串数组 words 和一个字符串 chars. 如果一个字符串能被 chars 里面的字符组成,那么这个字符串就是"好"的(chars里面每个字符只能使用一次)。
求:words 里面所有好的字符串的字符总个数。

比如:
words = [“cat”, “bt”, “hat”, “tree”]
chars = “atach”
好的字符串有 “cat”, “hat”, 3 + 3 = 6.
输出:6

代码

package ds.day06.Task01;


public class Task01 {
    public static void main(String[] args) {
        String[] words = new String[]{"cat", "bt", "hat", "tree"};
        String chars = "atach";
        int allNmber = 0;
        for (int i = 0; i < words.length; i++) {
            String chars1 = chars;
            char[] words1 = words[i].toCharArray();
            int j;
            for (j = 0; j < words1.length; j++) {
                if (chars1.indexOf(words1[j]) == -1) {
                    break;
                } else {
                    chars1.replace(words1[j],'#');
                }
            }
            if (j == words1.length) allNmber = allNmber + words1.length;
        }
        System.out.println(allNmber);
    }
}

结果

image-20220122203840972

Task02

问题

“aababcabcdabcde”,获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)

代码

package ds.day06.Task02;

import java.util.HashMap;
import java.util.Map;

public class Task02 {
    public static void main(String[] args) {
        String str = "aababcabcdabcde";
        char[] chr = str.toCharArray();
        Map<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < chr.length; i++) {
            if (map.containsKey(chr[i])) {
                map.put(chr[i], map.get(chr[i]) + 1);
            } else {
                map.put(chr[i], 1);
            }
        }
        System.out.println(map);
    }
}

结果

image-20220122211142560

Task03

问题

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数, 返回它们的索引。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。

比如:nums = [2, 7, 11, 15], target = 9.
因为 nums[0] + nums[1] = 2 + 7 = 9. 所以返回 [0, 1].

代码

package ds.day06.Task03;

import java.util.HashMap;

public class Task03 {
    public static void main(String[] args) {
        HashMap<Integer, Integer> map = new HashMap<>();
        map.put(2, 0);
        map.put(7, 1);
        map.put(11, 2);
        map.put(15, 3);
        int[] nums = {2, 7, 11, 15};
        int tag = 9;
        for (int i = 0; i < nums.length; i++) {
            if (map.containsKey(tag - nums[i])) {
                if (i != map.get(tag - nums[i])) {
                    System.out.println("[" + i + " " + map.get(tag - nums[i]) + "]");
                    break;
                }
            }
        }
    }
}

结果

image-20220122213220840

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值