资讯专栏INFORMATION COLUMN

子字符串的个数问题

Half / 2087人阅读

摘要:问题及解决问题描述输入一个字符串,字符串长度大于任意删除字符串的两个字符,得到其子字符串输出满足条件的不相同的子字符串的个数。

问题及解决

问题描述:

输入一个字符串,字符串长度大于3;

任意删除字符串的两个字符,得到其子字符串;

输出满足条件的不相同的子字符串的个数。

JavaScript实现:`

function select(str){
    let arr = str.split("");
    let iAar = [];
    let n = 0;
    arr.map(function(e,i){
        if(e !== arr[i-1]){  // 找到字符串中发生变化的地方,并储存其序列号
            iAar.push(i);
        }
    })
    for(let j=0; ;j++){
        if(j === iAar.length-1){
            let result = j===arr.length-1 ? n : n+1;  // 如果结尾是一个不重复的字符,不满足条件
            return result;
        } else if (iAar[j] === iAar[j+1]-1){
            n += iAar.length-j-1;
        } else {
            n += iAar.length-j;
        }
    }
}
我的思路

我认为关键在于找到去重的方法。我是这样想的:如果选择删除字符串的第一个字符,那么后面出现一段连续重复的片段,则在这个片段中选择删除任意一个字符得到的子字符串都是相同的,否则会得到不相同的子字符串。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90883.html

相关文章

  • 算法之旅 | 快速排序法

    摘要:今天跟大家分享多种排序算法里使用较广泛,速度快的排序算法快速排序法平均时间复杂度为。快速排序法的原理快速排序是一种划分交换排序,它采用分治的策略,通常称其为分治法。 HTML5学堂-码匠:前几期算法之旅跟大家分享了冒泡排序法和选择排序法,它们都属于时间复杂度为O(n^2)的慢排序。今天跟大家分享多种排序算法里使用较广泛,速度快的排序算法—— 快速排序法 [ 平均时间复杂度为O (n l...

    AlanKeene 评论0 收藏0
  • Leetcode 696.计数二进制串(javascript)

    摘要:题目给定一个字符串,计算具有相同数量和的非空连续子字符串的数量,并且这些子字符串中的所有和所有都是组合在一起的。示例输入输出解释有个子串具有相同数量的连续和,,,,和。请注意,一些重复出现的子串要计算它们出现的次数。 题目 给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。 重复出现的子串要计算它们出现的次数。 ...

    Noodles 评论0 收藏0
  • js基础 数组与符串

    摘要:最近在梳理的基础,首先从数组和字符串开始。如果超出有效范围与字符串长度减一的索引值返回空字符串返回对象内第一次出现子字符串位置。将字符串以参数分割为数组方法返回一个字符串,该字符串中的字母被转换成小写。 最近在梳理js的基础,首先从数组和字符串开始。 string 常用方法: 1.substring(start开始位置的索引,end结束位置索引) 截取的位置不包含结束位置的字符,只写一...

    liaosilzu2007 评论0 收藏0

发表评论

0条评论

Half

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<