zoukankan      html  css  js  c++  java
  • C语言练习题2

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

    示例 1:

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

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

    输入: s = "pwwkew"
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
      请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
    示例 4:

    输入: s = ""
    输出: 0

    来源:力扣(LeetCode)

    解题思路:

    空字符串:0

    一个字符:不重复的最长就1

    大于1个字符:

    如:pwwdskef

     j:从下标为一的字符(下标0开始),到最后一个;要是没有下标为1的字符,那不重复的字符就是0/1个。

    i:从下标为0的字符开始,每次循环到J之前,判断是否步进的每个i都不等于J所指的值。并实时记录每轮i循环里的不等于j 的字符的个数num(每轮更新一次,只有该伦次的num比前边的大)

    如果i在某次便利的时候,发现有个字符等于j指的字符,则num计数重置为1,说明出现了重复字符串,并且i及之前的字符串不能再用了,从i后边的字符,重新计数比较

    int lengthOfLongestSubstring(char * s){
    int i =0;
    int j =1;
    int number = 1;
    int temp = 1;
    int pts = 0;
    if(s[0]=='')
    {
        return 0;
    }
    for(j=1;s[j]!= '';j++)
    {
        for(int i = pts;i<j;i++)
        {
            if(s[i] != s[j])
            {
                number++;
            }else{
                number =1;
                pts = i+1;;
    
            }
        }
        if(number >temp)
        {
            temp = number;
        }
        number=1;
    }
    
    
    return temp;
    }
  • 相关阅读:
    教你写能被舒服舒服又舒服地调用的iOS库
    无比迅速敏捷地开发iOS超精美控件
    iOS中UIlabel多行文本展示使用小结
    诸葛亮诫子书
    保留开阔的心灵空间
    iOS长按手势列表拖拽功能实现
    iOS通知使用小结
    真正的成熟
    生活的常态
    记一次LNMP 502问题的解决 (Nginx 、php、php-fpm)
  • 原文地址:https://www.cnblogs.com/8335IT/p/14604147.html
Copyright © 2011-2022 走看看