javascript 查找字符串中某字符连续出现最多的次数,注意是连续.
发布网友
发布时间:2022-04-23 03:56
我来回答
共4个回答
热心网友
时间:2022-04-23 05:25
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);
当然, 应该可以用正则表达式使代码更紧凑.
热心网友
时间:2022-04-23 06:43
var s = 'aaaaabbbbsssssaaaaccccdddssssss', reg = /(.)\1*/g, r = {}, x;
x = s.match(reg);
if(x){
for(var i = x.length - 1; i > -1; i--){
if(!r[x[i][0]]) r[x[i][0]] = x[i].length;
else r[x[i][0]] = Math.max(r[x[i][0]], x[i].length)
}
};
x = [];
for(var p in r){
if(r.hasOwnProperty(p)) x.push(p + '最多连续出现了' + r[p] + '次')
}
alert(x.join('\r\n'));
热心网友
时间:2022-04-23 08:18
String content="121211112122222121222";
int num=0;
int maxNum=0;
char maxContent='';
for(int i=0;i<content.length-2;i++)
{
char a=content.subString(i,i+1);
char b=content.subString(i+1,i+2);
if(a.equals(b))
{
num++;
}
else
{
if(num>maxContent)
{
char maxContent=b;
maxNum=num;
}
num=0;
}
}
System.out.print("连续最长的字符串是"+maxCountent+",出现的次数为"+maxNum);
字符串中出现两个连续出现次数一样的字符,选取前者
以上纯属手敲,没有测试。大概思路就是这样
热心网友
时间:2022-04-23 10:09
var str = "121211112122222121111111222";
//定义一个函数
/**
var str 需要查询的字符串
var regexp 正则表达式
return maxLen
*/
var getMaxLen = function (str,regexp){
var maxLen = 0;
result =str.match(regexp);
for(var i=0; i<result.length; i++){
if(result[i].length > maxLen){
maxLen = result[i].length;
}
}
return maxLen
};
// 1连续的最大长度
alert(getMaxLen(str,/11+/ig));
// 2连续的最大长度
alert(getMaxLen(str,/22+/ig));