zoukankan      html  css  js  c++  java
  • leetcode1358

     1 class Solution:
     2     def numberOfSubstrings(self, s: str) -> int:
     3         n = len(s)
     4         prelist = []
     5         for i in range(n):
     6             a_index = s.find('a',i)
     7             b_index = s.find('b',i)
     8             c_index = s.find('c',i)
     9             prelist.append([a_index,b_index,c_index])
    10         count = 0
    11         for i in range(n):
    12             curlist = prelist[i]
    13             minIndex = min(curlist)
    14             maxIndex = max(curlist)
    15             if minIndex != -1:
    16                 count += n - maxIndex
    17             else:
    18                 break
    19         return count

    算法思路:字符串查询。

    记录每一个字符串的当前位置向后,下一次'a'/'b'/'c'字符的索引。

    每次计算当前位置三种字符下一个索引的最大值,从当前位置开始,到这个最大值这个子字符串是从这个起点开始的最短子串。

    向后每次增加一个字符,都满足条件。

    如果从当前位置向后,不再有下一个'a'/'b'/'c'字符,那么就停止循环(从这个字符作为起点,不再有满足条件的子串了)。

  • 相关阅读:
    82.Java集合学习之Collections与Arrays
    81.Java集合之TreeMap
    vuex 封装
    async awiat
    纯前端导入导出
    使用node搭建服务器
    node.js
    axios请求拦截器
    数据结构学习第十九天
    数据结构学习第十八天
  • 原文地址:https://www.cnblogs.com/asenyang/p/12349601.html
Copyright © 2011-2022 走看看