首页 > 试题广场 >

字符串碎片

[编程题]字符串碎片
  • 热度指数:317 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:'aaa','bb','c'。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少。

输入描述:
输入包括一个字符串s,字符串s的长度length(1 ≤ length ≤ 50),s只含小写字母('a'-'z')


输出描述:
输出一个整数,表示所有碎片的平均长度,四舍五入保留两位小数。

如样例所示: s = "aaabbaaac"
所有碎片的平均长度 = (3 + 2 + 3 + 1) / 4 = 2.25
示例1

输入

aaabbaaac

输出

2.25
let str = readline().split("")
let count = 0
for(let i = 0;i < str.length;i++){
    if(str[i] !== str[i+1]){
        count++
    }
}
let result = (str.length/count).toFixed(2)
console.log(result)
发表于 2022-03-25 13:01:46 回复(0)
var input
while (input = readline()) {
    var arr = input.match(/(\w)\1*/g);
    var total = 0;
    for(var i = 0; i < arr.length; i ++) {
        total += arr[i].length;
    }
    print((total/arr.length).toFixed(2));
}
发表于 2018-08-06 19:16:24 回复(0)
let s=readline();
const arr=s.split("");
let length=1;
const result=[];
let sum=0,r;
for(let i=0;i<arr.length-1;i++){
    if(arr.length!=0&&arr[i]==arr[i+1]){
        length++;
    }else{
        result.push(length);
        length=1;
    }
}
result.push(length);
result.forEach(item=>{
    sum=sum+item;
});
r = (sum/result.length).toFixed(2);//保留两位小数四舍五入
console.log(r);

发表于 2022-04-05 09:43:21 回复(0)
s = input()
sum = 1
for i in range(len(s)-1):
    if s[i]!=s[i+1]:
        sum = sum + 1
print('%.2f'%(1.0*len(s)/sum))
发表于 2020-08-19 17:02:57 回复(0)
var str = readline();
var len = str.length;
 
function helper(str, len) {
    if(len === 0) return 0;
    let res = 0, num = 0;
    let i = 0, j = 1;
    while(j < len) {
        if(str[j] === str[i]) {
            j+=1;
        } else {
            res += (j-i);
            num += 1;
            i = j;
            j = i+1;
        }
    }
    res += (j-i);
    num+=1;
    return (res/num).toFixed(2);
}
print(helper(str, len));

发表于 2020-07-28 19:05:30 回复(0)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var line=readline();
var long=0,count=1,number=1,avg;
for(let i=0;i<line.length;i++){
    if(line[i]!=line[i+1]){
        long=long+count;
        count=1;
        number++;
    }else{
        count++
    }
}
number--;
avg=(long/number).toFixed(2);
console.log(avg);

发表于 2018-08-09 13:27:27 回复(0)
function len(line){
       if(line.length<=0){
           return0;
       }
        var s=line.split("");
        var a='';
        var temp=[];
        var num=0;
        for(var i=0;i<s.length;i++){
            if(s[i]==s[i+1]){
                a+=s[i];
            }else{
                a+=s[i];
                temp.push(a);
                a='';
                continue;
            }
        }
        for(var j=0;j<temp.length;j++){
            num+=temp[j].length;
        }
        return(num/temp.length).toFixed(2);
    }
while(line=readline()){
    print(len(line));
}
    

发表于 2018-06-28 10:11:13 回复(0)