上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

字符串组合,要求连续

[复制链接]
  • TA的每日心情
    无聊
    2023-11-2 17:37
  • 签到天数: 275 天

    [LV.8]以坛为家I

    111

    主题

    447

    回帖

    961

    积分

    荣誉开发者

    积分
    961

    荣誉开发者油中2周年卓越贡献生态建设者

    发表于 2022-11-13 11:58:38 | 显示全部楼层 | 阅读模式

    题:把一个字符串,这里举例‘abc’进行排列组合 a b c ab bc abc
    JB3~OK~W)OKVSH($E73}ZCY.jpg

    刚开始我一直是 a ab abc b bc abc 这样写的,一直没发现规律,感觉这样的思路写逻辑写不太出来,按照上面的图思路就清晰了。

    参考的是这样写的

    let t = 'abc'
    // as是一个不可以重复的数组
    let as=new Set();
    
    let flag=1;
    // 左指针
    let l=0;
    // 右指针
    let r=flag-1;
    // 定义一个数组
    let temp=new Array();
    // 右指针-左指针 !== t.length
    while(r-l!=t.length){
        debugger
        if(r==t.length){
            flag++;
            r=flag-1;
            l=0;
            temp.sort();
            temp.forEach((item)=>{
                as.add(item);
            });
            temp=[];
        }
        temp.push(t.slice(l,r+1));
        l++;
        r++;
    }
    
    let ar='';
    as.forEach((item)=>{
            ar=ar+item+' ';
    
    })
    console.log(ar);

    我是这样写的

    let str = 'abcabc'
    let left = 0
    let right = 1
    // 计算执行了几个来回,刚开始是0来回
    let count = 0
    // 01 12 23  02 13 03
    let list = []
    
    while(count !== str.length) {
      if(right == str.length) {
        count += 1
        list.push(str.slice(left,right))
        left = 0 
        right = 1 + count
      } else {
        list.push(str.slice(left,right))
        left++
        right++
      }
    }
    // 使用new Set去重
    list = new Set(list)
    console.log(list)

    写的时候的思路

    let str = 'abc'
    let left = 0
    let count = 0
    let right = 1
    let list = []
    
    // 这样写第三次进不来了,假设用count就可以了
    while(right - left !== str.length) {
      if(right == str.length) {
        count += 1
        list.push(str.slice(left,right))
        left = 0 
        right = 1 + count
        debugger
      } else {
        list.push(str.slice(left,right))
        left++
        right++
      }
    }
    
    list = new Set(list)
    console.log(list)
    
    I frequently record, because want to leave something.

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表