• leetcode 76 Minimum Window Substring


    题意:给俩字符串s和t,问s里最短的包含t的全部字符的子串是啥。

    解法:尺取法。用tnum数组记录每个字符出现次数,用num记录当前取的这段每个字符出现次数,看是不是每个字符的出现次数都够了,够了就挪左指针不够就挪右指针

    tag上写的hash和尺取……其实一直不太懂hash……自己感觉跟hash没什么关系……看了别人的解释好像是说用数组记录出现次数算hash?orz

    还有这两天刷了leetcode之后觉得奇怪,为什么java的运行速度比c++高呢?这不科学啊

    代码:

    class Solution {
    public:
        bool judge(int tnum[], int num[]) {
            for(int i = 0; i < 256; i++) {
                if(tnum[i] > num[i]) return false;
            }
            return true;
        }
        string minWindow(string s, string t) {
            int tnum[256] = {0}, num[256] = {0};
            int len = INT_MAX;
            int ansi = -1, ansj = -1;
            for(int i = 0; i < t.size(); i++) {
                tnum[t[i]]++;
            }
            int i, j = 0;
            for(i = 0; i < s.size(); i++) {
                num[s[i]]++;
                while(judge(tnum, num)) {
                    if(i - j + 1 < len) {
                        ansi = i;
                        ansj = j;
                        len = i - j + 1;
                    }
                    num[s[j]]--;
                    j++;
                }
            }
            return ansi == -1 ? "" : s.substr(ansj, ansi - ansj + 1);
        }
    };
    

      既然tag里说是hash那我就分类成hash吧【XD

  • 相关阅读:
    未解决的
    nodejs 7 和 8 的比较
    openresty Nginx
    Vim快捷键分类
    wireshark 包过滤
    RSA 公私钥 互换问题
    vim命令
    Windows 小端存储
    python 字符转换
    ssl证书验证
  • 原文地址:https://www.cnblogs.com/Apro/p/5201183.html
Copyright © 2020-2023  润新知