最后更新

二刷

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;
}
}

最新文章

  1. Nginx反向代理的工作方式
  2. Mui框架一 快捷键+基础知识点
  3. 【python】3.x,string与bytes的区别(文本,二进制数据)
  4. 精选12个时尚的 CSS3 效果【附源码下载】
  5. [Android Pro] app_process command in Android
  6. 0729am空控制器
  7. The &quot;Real&quot; Project Plan
  8. ecshop init.php文件分析(转)
  9. SDK &quot;iphoneos&quot; cannot be located
  10. Java6.0中Comparable接口与Comparator接口详解
  11. Linux CentOS7下安装python3
  12. Spring邮件发送2
  13. JS 字符串对象 数组对象 函数对象 函数作用域
  14. hibernate之Configuration对象
  15. 7.Redis主线程阻塞原因
  16. MySQL左连接时 返回的记录条数 比 左边表 数量多
  17. MySQL变量的使用
  18. vue/cli3 配置vux
  19. [C#.Net]判断文件是否被占用的两种方法
  20. HDU 2829 区间DP &amp; 前缀和优化 &amp; 四边形不等式优化

热门文章

  1. uva12230Crossing Rivers
  2. 亲测!Jquery2.0不支持IE8-了
  3. UVa 11732 (Tire树) &quot;strcmp()&quot; Anyone?
  4. Tomcat 映射虚拟目录
  5. OK335xS psplash 进度条工作原理 hacking
  6. LeetCode Find Minimum in Rotated Sorted Array 旋转序列找最小值(二分查找)
  7. 门户网站架构Nginx+Apache+MySQL+PHP+Memcached+Squid
  8. 【转】超全!整理常用的iOS第三方资源 -- 不错
  9. Android-AnimationDrawable(三)运行的几种方式
  10. centos系统常用软件环境搭建