【Javascript】指针思想
Javascript 中的指针就是一个下标位置,与 C 语言中的指针不同。C 语言中的指针可以操作内存。
有如下题目:给定字符串"aaaaaabbbbbbbbbbccccccddddddddddddeeeeeee",寻找字符串中连续重复次数最多的字符,用指针思想解题?
分析
准备两个指针
i
和j
,i
初始指向 0,j
初始指向 1。i
和j
的移动规则是:- 如果
i
和j
指向的字符一样,那么i
不动,j
后移 - 如果
i
和j
指向的字不一样,此时说明他们之间的字符都是连续相同的,让 i 追上j
,j
后移
- 如果
解题
<!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>