字母异位词

有效的字母异位词

图片说明

class Solution {
    public boolean isAnagram(String s, String t) {
        int slen = s.length();
        int tlen = t.length();
        if(slen != tlen){
            return false;
        }
        //借助一个数组,下标为字符
        int[] c = new int[26];
        for(int i =0; i < slen; i++){
            c[s.charAt(i) - 'a'] ++;
            c[t.charAt(i) - 'a'] --; 
        }
        for(int i = 0; i < 26; i++){
            if(c[i] != 0){
                return false;
            }
        }
        return true;
    }
}

找到字符串中所有字母异位词

图片说明

借助滑动窗口:

class Solution {
    public List<Integer> findAnagrams(String s, String p) {
        int[] windows = new int[26];
        int[] needs = new int[26];
        List<Integer> res = new ArrayList<>();
        for(char ch : p.toCharArray()){
            needs[ch - 'a'] ++;
        }
        int left = 0, right = 0;


        while(right < s.length()){
            char c = s.charAt(right);
            //右移
            right++;
            if(needs[c - 'a'] > 0){
                //进行更新
                windows[c - 'a'] ++; 

            }
            //左移
            while(right - left >= p.length()){
                //借用工具类来比较
                if(Arrays.equals(needs, windows)){
                    //如果都包含,添加进去
                    res.add(left);
                }
                char d = s.charAt(left);
                left++;
                //如果是目标字符串的字母,进行更新
                if(needs[d - 'a'] > 0){ 
                   windows[d - 'a'] --;
                }

            }
        }
        return res;
    }
}
全部评论

相关推荐

真起不了响亮的名字:九月份人家投秋招你投实习嘛,会不会有点晚了,算你九月份直接上岗,实习三个月后一月初去和别人抢秋招补录还是备战春招啊更别说休息一个月后还要重新复习八股和算法
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
06-12 10:50
门头沟学院 Java
你的不定积分没加C:我怎么在学院群看到了同样的话
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务