LeetCode()Minimum Window Substring 超时,但觉得很清晰。
2015-11-26 15:03
344 查看
我的超时思路,感觉自己上了一个新的台阶,虽然超时了,但起码是给出了一个方法。
遍历s 一遍即可,两个指针,当找到了一个合格的字串后,start 开始走,直到遇到s[start]在t中
如果不符合,end++,直到遇到s[end]在t中。
class Solution {
public:
string minWindow(string s, string t) {
int start=0,end=t.size()-1;
string res;
int len=INT_MAX;
map<char,int> coll;
for(int i=0;i<t.size();i++)
{
coll[t[i]]++;
}
while(end<s.size())
{
string str=s.substr(start,end-start+1);
if(check(str,t))
{
if(end-start+1 < len)
{
len=end-start+1;
res=str;
}
while(++start < end && coll[s[start]] == 0);
}
else while(++end<s.size() && coll[s[end]] == 0);
}
return res;
}
bool check(string str,string t)
{
map<char,int> coll;
for(int i=0;i<str.size();i++)
{
coll[str[i]]++;
}
for(i=0;i<t.size();++i)
{
if(coll[t[i]]==0)
return false;
else
coll[t[i]]--;
}
return true;
}
};
看了几个别人的,越发觉得我这个思路很清晰,可惜超时,先这样吧。
遍历s 一遍即可,两个指针,当找到了一个合格的字串后,start 开始走,直到遇到s[start]在t中
如果不符合,end++,直到遇到s[end]在t中。
class Solution {
public:
string minWindow(string s, string t) {
int start=0,end=t.size()-1;
string res;
int len=INT_MAX;
map<char,int> coll;
for(int i=0;i<t.size();i++)
{
coll[t[i]]++;
}
while(end<s.size())
{
string str=s.substr(start,end-start+1);
if(check(str,t))
{
if(end-start+1 < len)
{
len=end-start+1;
res=str;
}
while(++start < end && coll[s[start]] == 0);
}
else while(++end<s.size() && coll[s[end]] == 0);
}
return res;
}
bool check(string str,string t)
{
map<char,int> coll;
for(int i=0;i<str.size();i++)
{
coll[str[i]]++;
}
for(i=0;i<t.size();++i)
{
if(coll[t[i]]==0)
return false;
else
coll[t[i]]--;
}
return true;
}
};
看了几个别人的,越发觉得我这个思路很清晰,可惜超时,先这样吧。
相关文章推荐
- (c++) int 转 string,char*,const char*和string的相互转换
- 在Java的Struts框架下进行web编程的入门教程
- mongo 集群时间不同步异常
- swift学习笔记-3
- adb shell 命令
- Mysql分表和分区的区别
- python的for循环中不能修改循环变量i
- git rebase 详解
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
- 一致性hash - php
- hive使用orcfile parquet sequencefile
- 浏览器获取电脑屏幕的像数打开新的页面
- git 详解
- Linux(CentOS)部署Java Web项目
- JAVA编程中为了提高性能必须要考虑的东西
- Java instanceof
- RadioGroup+Fragment实现页面之间的切换
- RadioGroup+Fragment实现页面之间的切换
- RadioGroup+Fragment实现页面之间的切换
- RadioGroup+Fragment实现页面之间的切换