可以利用charAt 上一位与这一位一致就是连续的
function serial(number){number = number.toString()
for (var i = 0 i < number.lengthi++){
if(i > 0 && number.charAt(i) == number.charAt(i - 1)){
return true
}
}
}
function TestMaxCount(s) {var chAry = new Array()
var cnAry = new Array()
var i, idx, ch, continueCh = "", continueCn = 1
var maxCh = "", maxCn = 0
for (i = 0 i < s.length i++) {
ch = s.slice(i, i + 1)
if (ch != continueCh) { // 字符与前一个不同
if (continueCh != "") { // 如果前一字符不是空串, 要更新重复数组的最大重复次数值
idx = GetIndex(chAry, continueCh)
if (idx == -1) {
chAry.push(continueCh)
cnAry.push(continueCn)
}
else {
if (continueCn > cnAry[idx]) { // 如果新的连续重复次数大于原次数, 进行更新
cnAry[idx] = continueCn
}
}
}
if (continueCn > maxCn) {
maxCn = continueCn
maxCh = continueCh
}
continueCn = 1 // 重复次数归1
continueCh = ch // 重复字符置为当前获取到的字符
}
else {
continueCn++
}
}
if (continueCh != "") {
idx = GetIndex(chAry, continueCh)
if (idx == -1) {
chAry.push(continueCh)
cnAry.push(continueCn)
}
else {
if (continueCn > cnAry[idx]) { // 如果新的连续重复次数大于原次数, 进行更新
cnAry[idx] = continueCn
}
}
if (continueCn > maxCn) {
maxCn = continueCn
maxCh = continueCh
}
}
// 返回资料chAry为字符数组, cnAry为对应字符最大连续次数, maxCh重复次数最多的字符, maxCn重复最多次数
return { chAry: chAry, cnAry: cnAry, maxCh: maxCh, maxCn: maxCn }
}
function GetIndex(ary, ch) { // 获得元素在数组中的索引
var i
for (i = 0 i < ary.length i++) {
if (ary[i] == ch) {
return i
}
}
return -1
}
var data = TestMaxCount("121211112122222121222")
window.alert(data.maxCh + ": " + data.maxCn)
当然, 应该可以用正则表达式使代码更紧凑.