1. /*
  2. 题目:
  3. 最长不含重复字符的子字符串。
  4. */
  5. /*
  6. 思路:
  7. f(i) = f(i-1) + 1,(未出现过当前字符,distance > f(i-1)
  8. distance,当前字符和上一次出现该字符的距离
  9. */
  10. #include<iostream>
  11. #include<cstring>
  12. #include<vector>
  13. #include<algorithm>
  14.  
  15. using namespace std;
  16.  
  17. int longestSubstringWithoutDuplication(string str){
  18. int en[26];
  19. memset(en,-1,sizeof(en));
  20. int len = str.size();
  21. int maxVal = 0;
  22. int curr = 0;
  23. for(int i = 0; i < len; i++){
  24. if(en[str[i]-'a'] == -1){
  25. curr = curr + 1;
  26. }else{
  27. int d = i - en[str[i]-'a'];
  28. if(d > curr){
  29. curr++;
  30. }else{
  31. if(curr > maxVal){
  32. maxVal = curr;
  33. }
  34. curr = d;
  35. }
  36. }
  37. cout<<str[i]<<" "<<i<<" "<<curr<<endl;
  38. en[str[i]-'a'] = i;
  39. }
  40. return max(curr,maxVal);
  41. }
  42.  
  43. int main(){
  44. string str="arabcacfr";
  45. cout<<longestSubstringWithoutDuplication(str);
  46.  
  47. return 0;
  48. }

  

剑指offer-面试题48-最长不含重复字符的子字符串-动态规划的更多相关文章

  1. 剑指offer面试题48: 最长不含重复字符的子字符串

    Given a string, find the length of the longest substring without repeating characters.(请从子字符串中找出一个最长 ...

  2. 剑指 Offer 48. 最长不含重复字符的子字符串 + 动态规划 + 哈希表 + 双指针 + 滑动窗口

    剑指 Offer 48. 最长不含重复字符的子字符串 Offer_48 题目详情 解法分析 解法一:动态规划+哈希表 package com.walegarrett.offer; /** * @Aut ...

  3. 《剑指offer》面试题48. 最长不含重复字符的子字符串

    问题描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度.   示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串 ...

  4. 【Java】 剑指offer(48) 最长不含重复字符的子字符串

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字 ...

  5. 每日一题 - 剑指 Offer 48. 最长不含重复字符的子字符串

    题目信息 时间: 2019-07-02 题目链接:Leetcode tag: 动态规划 哈希表 难易程度:中等 题目描述: 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度 ...

  6. 剑指 Offer 48. 最长不含重复字符的子字符串

    题目描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度. 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 & ...

  7. 《剑指offer》第四十八题(最长不含重复字符的子字符串)

    // 面试题48:最长不含重复字符的子字符串 // 题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子 // 字符串的长度.假设字符串中只包含从'a'到'z'的字符. #inclu ...

  8. 剑指offer——50最长不含重复字符和子字符串

    题目: 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度.假设字符串中只包含’a~z”的字符.例如,在字符串“arabcacfr"中,最长的不含重复字符的子字符串 ...

  9. 【Offer】[48] 【最长不含重复字符的子字符串】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度.假设字符串中只包含'a'~'z'的字符.例如,在字符串&q ...

随机推荐

  1. Elasticsearch系列

    一.Elasticsearch简介 二.elasticsearch集群监控相关

  2. lua学习之表达式篇

    表达式 表达式用于表达值 lua 中表达式可以为数字常量,自变字符串,变量,一元和二元操作符,函数调用.函数定义.table 构造式 算数操作符 一元操作符 -负号 二元操作符 -减号 / ^ % x ...

  3. linux下命令的全称,方便记忆(转)-修改补充版

    su:Swith user  切换用户,切换到root用户 cat: Concatenate  串联(cat(Concatenate)命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容, ...

  4. 手把手教你Dubbo与SpringBoot常用两种方式整合

    一.Dubbo整合SpringBoot的方式(1) 1)直奔主题,方式一: pom.xml中引入dubbo-starter依赖,在application.properties配置属性,使用@Servi ...

  5. MSSqlServer访问远程数据库

    --第一部分(要点)--永久访问方式(需对访问远程数据库进行经常性操作)时设置链接数据库Exec sp_addlinkedserver 'MyLinkServer','','SQLOLEDB','远程 ...

  6. 《自拍教程6》打开Windows文件后缀

    如果你用的是Windows操作系统, 请把文件后缀名打开,千万别隐藏后缀名, 后续有各类 .py, .sh, .bat, .exe等不同文件, 需要你时刻关注文件后缀名. 如果是我看到我手下的测试人员 ...

  7. linux 使用nfs 服务实现远程共享

    首先安装 apt install -y nfs-kernel-server nfs-common 编辑配置文件 vim /etc/exports 添加内容: /root/test *(rw,sync, ...

  8. java 自学简单框架(反射+注解)

    1.先定义一个学生类 2.再定义一个teacher类(这个是为了练习多个注解,自己练习可以 不写这个) 3.再定义个一个学生老师类(这个是为了最终调用上面的那个学生类做准备) 4.下面开始真正的写框架 ...

  9. jquery + ajax 提交数据报错

    报错 Forbidden (CSRF token missing or incorrect.): /account/test/ [20/Oct/2016 18:10:44] "POST /a ...

  10. IIS停止服务 报错Connections_Refused

    IIS版本6.0  无故停止工作.         重启IIS 没有效果,必须重启web服务器.出现客户端无法访问Web服务器上的站点,错误信息提示为"页面无法显示"的情况.登录服 ...