博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java算法练习——无重复字符的最长子串
阅读量:6230 次
发布时间:2019-06-21

本文共 1390 字,大约阅读时间需要 4 分钟。

题目描述

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1

输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

示例 2

输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

示例 3

输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

题解 1

class Solution {    public int lengthOfLongestSubstring(String s) {        char[] chars = s.toCharArray();        int max = 0;        if (chars.length == 0) {            return 0;        } else if (chars.length == 1) {            return 1;        }        //重复的坐标        int len = 0;        // 外层for循环  用来计算总长        int j ;        //内层for循环  用来计算总长        int k;        for (j=0; j 
< j - len + 1? j - len + 1: max; } return max; }}

题解 2

class Solution {    public int lengthOfLongestSubstring(String s) {        int len = s.length();        if (len == 0 || len == 1) {            return len;        }        List
list; int n = 0; for (int i = 0; i < len; i++) { list = new ArrayList<>(); for (int j = i; j < len; j++) { if (!list.contains(s.charAt(j))) { list.add(s.charAt(j)); n = n > j - i + 1? n : j - i + 1; } else { break; } } } return n; }}

手记

一道值得品味的题。同样是遍历,但是 题解 1 要比 题解 2快上不少。双层for 循环的部分,值得用心分析。

猴急

做题不要像这个小标题

以上

转载于:https://www.cnblogs.com/mxwbq/p/10918575.html

你可能感兴趣的文章
vue.js的学习
查看>>
插入排序的应用
查看>>
Retrofit2.0中注解使用方式
查看>>
Key-Value Coding Accessor 及其与KVC的关系
查看>>
把购买数据添加到购物车
查看>>
[磁盘空间]lsof处理文件恢复、句柄以及空间释放问题
查看>>
C#操作Control异步工具类
查看>>
由两个栈组成队列
查看>>
VirtrualBox使用已存在的镜像创建虚拟机
查看>>
python 拼图验证码
查看>>
JSOI2017 Round1 Day0
查看>>
Java面试题复习笔记(Web方向)
查看>>
第二次冲刺站立会议(3)
查看>>
java中的object... args参数
查看>>
笔试之大整数相乘
查看>>
转载笔记
查看>>
学习笔记 UpdateXml() MYSQL显错注入
查看>>
lua封装的位运算
查看>>
linux:逐行合并两文件(paste命令)
查看>>
mjpg-stream 视频服务 (1)| 简介与配置树莓派使用
查看>>