Javascript 中的指针就是一个下标位置,与 C 语言中的指针不同。C 语言中的指针可以操作内存。

有如下题目:给定字符串"aaaaaabbbbbbbbbbccccccddddddddddddeeeeeee",寻找字符串中连续重复次数最多的字符,用指针思想解题?

  • 分析

    准备两个指针iji初始指向 0,j初始指向 1。ij的移动规则是:

    • 如果ij指向的字符一样,那么i不动,j后移
    • 如果ij指向的字不一样,此时说明他们之间的字符都是连续相同的,让 i 追上jj后移
  • 解题

    <!DOCTYPE html>
    <html lang="zh-CN">
        <head>
            <meta charset="UTF-8" />
            <meta name="viewport" content="width=device-width, initial-scale=1.0" />
            <title>指针思想</title>
        </head>
    
        <body></body>
        <script>
            // 试寻找字符串中,连续重复次数最多的字符。
            var str = "aaaaaabbbbbbbbbbccccccddddddddddddeeeeeee";
    
            // 指针
            var i = 0;
            var j = 1;
            // 当前重复最多的次数
            var maxRepeatCount = 0;
            // 重复次数最多的字符
            var maxRepeatChar = "";
    
            // 当i还在范围内的时候,应该继续寻找
            while (i <= str.length - 1) {
                // 看下标为i和j指向的字符是否不相同
                if (str[i] != str[j]) {
                    // 与当前重复次数最多的进行比较
                    if (j - i > maxRepeatCount) {
                        // 如果当前文字重复次数超过了最大值,那它就是最大值
                        maxRepeatCount = j - i;
                        // 将i指针指向的字符存为maxRepeatChar
                        maxRepeatChar = str[i];
                    }
                    i = j;
                }
                // 不管是否相同,j都要后移
                j++;
            }
            // 循环结束,输出结果
            console.log(
                maxRepeatChar + "重复了" + maxRepeatCount + "次,最多连续重复字符"
            );
        </script>
    </html>

标签: 暂无标签