159. Longest Substring with At Most Two Distinct Characters
2024-09-30 06:40:12
最后更新
二刷
08-Jan-17
回头看了下一刷的,用的map,应该是int[256]的意思,后面没仔细看cuz whatever I was doing at that time.. wasnt good
做法和LC 76非常像,用2 Pointers + 计数来判断是否满足。
这里“有效读取”的判断标准变成了 count[s.charAt(someIndex)]是否从0递增,和每个循环最后它是否递减回0,以此判断dinstinct是否有变化,其实这个比76的有效读取要稍微好理解一些。
Time: O(N)
Space: Constant space..
public class Solution {
public int lengthOfLongestSubstringTwoDistinct(String s) {
if (s.length() <= 2) return s.length();
int[] count = new int[256];
int temp = 0;
int right = 0;
int maxLength = -1;
for (int left = 0; left < s.length(); left ++) {
while (right < s.length()) {
if (temp == 2 && count[s.charAt(right)] == 0) break;
if (++count[s.charAt(right++)] == 1) {
temp ++;
}
}
if (right - left > maxLength) {
maxLength = right - left;
}
if (--count[s.charAt(left)] == 0) {
temp --;
}
}
return maxLength;
}
}
一刷
18-Dec-2016
怎么和上一题一样的。。。
map快。。
import java.util.Hashtable;
public class Solution
{
public int lengthOfLongestSubstringTwoDistinct(String s)
{
if(s.length() <= 2) return s.length();
Hashtable<Character,Integer> table = new Hashtable<Character,Integer>();
int temp = 0;
int l = 0;
int res = 1;
for(int i = 0; i < s.length();i++)
{
char c = s.charAt(i);
if(!table.containsKey(c)) temp++;
table.put(c,i);
if(temp > 2)
{
temp--;
Iterator iter = table.keySet().iterator();
char iterC = c;
int index = i;
while(iter.hasNext())
{
char tempC = (char)iter.next();
if(table.get(tempC) < index)
{
index = table.get(tempC);
iterC = tempC;
}
}
table.remove(iterC);
l = index + 1;
}
res = Math.max(res,i+1-l);
}
return res;
}
}
最新文章
- Nginx反向代理的工作方式
- Mui框架一 快捷键+基础知识点
- 【python】3.x,string与bytes的区别(文本,二进制数据)
- 精选12个时尚的 CSS3 效果【附源码下载】
- [Android Pro] app_process command in Android
- 0729am空控制器
- The ";Real"; Project Plan
- ecshop init.php文件分析(转)
- SDK ";iphoneos"; cannot be located
- Java6.0中Comparable接口与Comparator接口详解
- Linux CentOS7下安装python3
- Spring邮件发送2
- JS 字符串对象 数组对象 函数对象 函数作用域
- hibernate之Configuration对象
- 7.Redis主线程阻塞原因
- MySQL左连接时 返回的记录条数 比 左边表 数量多
- MySQL变量的使用
- vue/cli3 配置vux
- [C#.Net]判断文件是否被占用的两种方法
- HDU 2829 区间DP &; 前缀和优化 &; 四边形不等式优化
热门文章
- uva12230Crossing Rivers
- 亲测!Jquery2.0不支持IE8-了
- UVa 11732 (Tire树) ";strcmp()"; Anyone?
- Tomcat 映射虚拟目录
- OK335xS psplash 进度条工作原理 hacking
- LeetCode Find Minimum in Rotated Sorted Array 旋转序列找最小值(二分查找)
- 门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid
- 【转】超全!整理常用的iOS第三方资源 -- 不错
- Android-AnimationDrawable(三)运行的几种方式
- centos系统常用软件环境搭建