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;
    }
  • 相关阅读:
    Codeforces Round #615 (Div. 3)
    「网络流 24 题」最长 k 可重区间集
    「网络流 24 题」方格取数
    「网络流 24 题」试题库
    debian服务sh启动java,设置开机启动
    debian重置root密码
    uwsgi加载ini文件,nginx重新加载,查看配置文件路劲
    pptpd启动
    android studio java lib不能直接运行
    clipChildren是否限制子控件在该容器所在的范围内
  • 原文地址:https://www.cnblogs.com/8335IT/p/14604147.html
Copyright © 2011-2022 走看看