Re: [闲聊] 每日LeetCode

楼主: oin1104 (是oin的说)   2024-02-04 13:36:33
今天的题目:
在s字串里面找到包含t字串的最短字串
包含是只要有出现里面的字母就好
顺序不管
解法:
直接two pointer sliding window 什么的
全部加起来然后全部看一下
就过ㄌ
后来发现我应该可以在缩小 l 左界
的时候用while直接缩到最小
不过好懒捏
姆咪
class Solution {
public:
string minWindow(string s, string t)
{
int len = s.size();
int lent = t.size();
int save[300] = {};
int tar[300] = {};
int anslen = 99999999;
int ansp = -1;
for(int i = 0 ; i < lent ; i ++)
{
tar[t[i]] ++;
}
int l = 0 ;
int r = 0 ;
save[s[r]] ++;
while(r != len)
{
int cnt = 0;
int ok = 1;
for(int c = 0 ; c <300 ; c ++)
{
cnt += save[c];
if(save[c] < tar[c])
{
ok = 0;
}
}
if(ok == 0)
{
r++;
save[s[r]] ++;
}
else if(ok == 1)
{
//printf("%d %d \n",l ,r);
if(cnt < anslen)
{
anslen = cnt;
ansp = l;
}
save[s[l]]
作者: kazunerae (数狙え)   2024-02-04 13:39:00
int ok = 1
作者: SecondRun (雨夜琴声)   2024-02-04 14:41:00
大师

Links booklink

Contact Us: admin [ a t ] ucptt.com