javascript - 如何找到字符串中最长的匹配字母序列?

标签 javascript function

我是 JavaScript 新手,我正在尝试查找行中相同字母的最大值。我的字符串中有很多字母,但我不知道下一步该怎么做。

非常感谢您的帮助。

这是我的代码:

let myString = "aaaAAAwwwwkkaaaaalllkk"


function countLetters(myString){
    let lowcase = myString.toLowerCase();
    let tempArr = lowcase.split('');
    let letters = [];
    let count = 1;

    for(i = 0 ; i < tempArr.length; i++){
        if(tempArr[i] === tempArr[i+1]){
            count++;
        }
        else{
            let value = `${count},${tempArr[i]}`;
            letters = [...letters, value];
            count = 1;
        }
    }
    return letters
}
console.log(countLetters(myString))

最佳答案

您可以使用正则表达式来识别具有重复字符的 block :

function countLetters(myString) {
    return myString.toLowerCase()
                   .match(/(.)\1*/gs)
                   .reduce((acc, s) => s.length > acc.length ? s : acc, "");
}

let myString = "xxaaaAAAwwwwkkaaaaalllkk"
console.log(countLetters(myString))

这将返回由相同(不区分大小写)字符组成的(小写)最长子字符串。

关于javascript - 如何找到字符串中最长的匹配字母序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66323475/

相关文章:

javascript - Math.floor(Math.random() * (Max - Min + 1) + Min) 如何在 JavaScript 中工作? (理论)

C++ vptr 在每个对象中都是重复的

jquery - polymer ! Ajax中调用函数成功

c - 编写接受指针变量并将值从文件分配给 C 结构的函数

javascript - IE8 使用 JavaScript 加载和移动广告

javascript - JavaScript 如何处理模数?

javascript - 从命令行运行时 Cypress 测试失败,但如果从 Cypress 测试运行程序运行则通过

javascript - 检查 windows/page/document/iframe 是否有焦点

javascript - 在 Javascript 中使用 For 循环的 innerHTML

swift - (Swift) 在 guard 语句中调用函数