zoukankan      html  css  js  c++  java
  • 力扣242题、383题(有效的字母异位词,赎金信)

    242、有效的字母异位词

    基本思想:

    哈希表

    具体实现:

    1、定义一个大小为26的数组record

    2、record记录字符串s里字符出现的次数

    3、需要把字符映射到数组也就是哈希表的索引上

    字符a到字符z的ASCII是26个连续的数值

    字符a映射到索引0,字符z映射到索引25

    遍历s这个字符串时,

    将s[i] -'a' 这个索引对应的record+1

    4、检查字符串t对应的字符有没有出现在record上

    遍历字符串t,

    将t[i] - 'a' 这个索引对应的record-1

    5、最后如果record的所有元素都是0,则s和t是字母异位词

    代码:

    class Solution {
        public boolean isAnagram(String s, String t) {
            int[] record = new int[26];
            for (char c : s.toCharArray()){
                record[c - 'a'] += 1;
            }
            for (char c : t.toCharArray()){
                record[c - 'a'] -= 1;
            }
            for (int i : record){
                if (i != 0){
                    return false;
                }
            }
            return true;
        }
    }

    383、赎金信

    代码:

    class Solution {
        public boolean canConstruct(String ransomNote, String magazine) {
            //记录杂志字符串出现的次数
            int[] arr = new int[26];
            int temp;
            for (int i = 0; i < magazine.length(); i++) {
                temp = magazine.charAt(i) - 'a';
                arr[temp]++;
            }
            for (int i = 0; i < ransomNote.length(); i++) {
                temp = ransomNote.charAt(i) - 'a';
                //对于金信中的每一个字符都在数组中查找
                //找到相应位减一,否则找不到返回false
                if (arr[temp] > 0) {
                    arr[temp]--;
                } else {
                    return false;
                }
            }
            return true;
        }
    }
  • 相关阅读:
    语义web服务发现实验框架
    Shiro的标签说明
    oj2694 逆波兰表达式
    poj1164 The Castle
    poj1161 Walls
    nyoj19 擅长排列的小明
    poj1664 放苹果
    nyoj236 心急的C小加
    oj2755 神奇的口袋
    poj1979 Red and Black
  • 原文地址:https://www.cnblogs.com/zhaojiayu/p/15407725.html
Copyright © 2011-2022 走看看