leetCode(55):Minimum Window Substring(limits.h头文件)
2015-08-09 22:01
405 查看
Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).
For example,
S =
T =
Minimum window is
Note:
If there is no such window in S that covers all characters in T, return the emtpy string
If there are multiple such windows, you are guaranteed that there will always be only one unique minimum window in S.
不会做,看了别人的程序,自己按他的思路写了个。当作学学别人的编程技巧了。
以上程序中包括了两个头文件:<limits.h>、<algorithm>;前者定义了部分数据类型的极限取值(INT_MAX),后者是STL中相关算法(fill_n)
limits.h头文件内容如下:
C语言的数据类型有四种:整形、浮点型、指针、聚合类型(数组、结构等),其中整形家族的变量包括:char, int, short, long, enum等。浮点数家族包括float, double等。
limits.h头文件对整形家族变量范围进行了宏定义。float.h定义了FLT_MAX, FLT_MIN, DBL_MAX, DBL_MIN。下面这张表搬运自维基百科。
For example,
S =
"ADOBECODEBANC"
T =
"ABC"
Minimum window is
"BANC".
Note:
If there is no such window in S that covers all characters in T, return the emtpy string
"".
If there are multiple such windows, you are guaranteed that there will always be only one unique minimum window in S.
不会做,看了别人的程序,自己按他的思路写了个。当作学学别人的编程技巧了。
class Solution { public: string minWindow(string s, string t) { int slength=s.size(); int tlength=t.size(); int alphArray[128]; fill_n(alphArray,128,-slength); int minS,minL=INT_MAX; for(int i=0;i<tlength;++i) alphArray[t[i]]=alphArray[t[i]]>0?(++alphArray[t[i]]):1; int start=0; for(int i=0,count=tlength;i<slength;++i) { if((--alphArray[s[i]]>=0) && (--count==0)) { while(alphArray[s[start]]<=-slength || (++alphArray[s[start]]<=0)) ++start; if(minL>i-start+1) { minL=i-start+1; minS=start; } count=1;//因为丢弃了一个 ++start; } } return minL==INT_MAX?"":s.substr(minS,minL); } };
以上程序中包括了两个头文件:<limits.h>、<algorithm>;前者定义了部分数据类型的极限取值(INT_MAX),后者是STL中相关算法(fill_n)
limits.h头文件内容如下:
C语言的数据类型有四种:整形、浮点型、指针、聚合类型(数组、结构等),其中整形家族的变量包括:char, int, short, long, enum等。浮点数家族包括float, double等。
limits.h头文件对整形家族变量范围进行了宏定义。float.h定义了FLT_MAX, FLT_MIN, DBL_MAX, DBL_MIN。下面这张表搬运自维基百科。
Name | Description | Typical value | ANSI standard minimum- or maximum magnitude value | |
---|---|---|---|---|
CHAR_BIT | Number of bits in a char | 8 | ≥+8 | |
SCHAR_MIN | Minimum value for a signed char | –128 | ≤–127 | |
SCHAR_MAX | Maximum value for a signed char | +127 | ≥+127 | |
UCHAR_MAX | Maximum value for an unsigned char | +255 | ≥+255 | |
CHAR_MIN | Minimum value for a char | –128 | ≤–127 (if charis represented as a signed char; otherwise ≤0) | |
CHAR_MAX | Maximum value for a char | +127 | ≥+127 (if charis represented as a signed char; otherwise ≥+255) | |
MB_LEN_MAX | Maximum multi byte length of a character across all locales | varies, usually at least 4 | ≥+1 | |
SHRT_MIN | Minimum value for a short int | –32,768 | ≤–32,767 | |
SHRT_MAX | Maximum value for a short int | +32,767 | ≥+32,767 | |
USHRT_MAX | Maximum value for an unsigned short int | +65,535 | ≥+65,535 | |
INT_MIN | Minimum value for an int | –2,147,483,648 | ≤–32,767 | |
INT_MAX | Maximum value for an int | +2,147,483,647 | ≥+32,767 | |
UINT_MAX | Maximum value for an unsigned int | +4,294,967,295 | ≥+65,535 | |
LONG_MIN | Minimum value for a long int | 32 bit compiler | –2,147,483,648 | ≤–2,147,483,647 |
64 bit compiler | –9,223,372,036,854,775,808 | |||
LONG_MAX | Maximum value for a long int | 32 bit compiler | +2,147,483,647 | ≥+2,147,483,647 |
64 bit compiler | +9,223,372,036,854,775,807 | |||
ULONG_MAX | Maximum value for an unsigned long int | 32 bit compiler | +4,294,967,295 | ≥+4,294,967,295 |
64 bit compiler | +18,446,744,073,709,551,615 | |||
LLONG_MIN | Minimum value for a long long int | –9,223,372,036,854,775,808 | ≤-9,223,372,036,854,775,807 | |
LLONG_MAX | Maximum value for a long long int | +9,223,372,036,854,775,807 | ≥+9,223,372,036,854,775,807 | |
ULLONG_MAX | Maximum value for an unsigned long long int | +18,446,744,073,709,551,615 | ≥+18,446,744,073,709,551,615 |
相关文章推荐
- Spring学习笔记一(Spring简单介绍)
- 计蒜客 难题题库 025 两数之和
- 基于nio架构的可高扩展的服务器(Architecture of a highly scalable NIO-based server)
- jquery控件-实现自定义样式的弹出窗口和确认框
- HashMap存储原理
- hiho #1044 : 状态压缩·一
- 4、定时器T1通过查询方式控制LED1周期性闪烁(轮训方式)
- 异步
- java_web学习(15)jQuery
- css3兄弟选择器
- C中实现进制转换
- 浅谈Android system_service 注册Service、APP获取并访问服务(PMS:PowerManagerService)为例
- 1-使用系统对象 打印 年 月 日 时 分 秒 星期
- 简单了解ADO.NET、ADO、OLE DB、ODBC
- android 安卓开发通过 无线wifi 调试 APK (不用Root) 及 ROOT 后无线wifi调试 源码
- 产生一个随机数的函数 范围[a,b]
- Java中的守护线程
- hdu 1846 博弈
- poj2506 大数递推
- shell 基础(一)