首页 > 试题广场 >

字符串碎片

[编程题]字符串碎片
  • 热度指数:485 时间限制: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
import java.util.*;
import java.text.DecimalFormat;
public class Main{
    public static void main(String[] args){
        Scanner sca = new Scanner(System.in);
        while(sca.hasNext()){
            String str = sca.next();
            if(str == null){
                System.out.println(0);
            }
            int temp = 1;
            char[] a = str.toCharArray();
            for(int i = 0;i<str.length()-1;i++){
                if(a[i]!=a[i+1]){
                    temp++;
                }
            }
            if(temp == 0){
                System.out.println(str.length());
            }
            System.out.println(new DecimalFormat(".00")
                               .format((float)str.length()/temp));
        }
    }
}


发表于 2019-08-18 01:07:10 回复(0)
#include <iostream>
using namespace std;

int main(){
    string sourceString = "aaabbaaaccb";
    getline(cin,sourceString);//获取测试用例
    
    float len = sourceString.length();
    if(len == 0){
        printf("空字符串");
        return 0;
    }
    
    uint count= 1;
    for(int i = 0; i < len-1;i++){
        if(sourceString[i]!=sourceString[i+1]){//遍历整个字符串到倒数第二个
            count++;//如果前后不一致,说明字符变化,修改记录变量保存下来
        }
    }
    printf("%0.2f",(float)len/count);//四舍五入保留两位小数
    return 0;
}
发表于 2022-05-14 17:53:55 回复(0)
s = input()
count = 1
ref = s[0]
for i in range(1,len(s)):
    if s[i] != ref:
        ref = s[i]
        count+=1
aver = len(s)/count
print('%.2f'%aver)
发表于 2020-08-08 13:30:23 回复(0)
a=input()
count=1
list=[]
for i in range(len(a)):
    if i+1!=len(a):
        if a[i+1]==a[i]:
            count+=1
        else:
            list.append(count)
            count=1
    else:
        list.append(count)
long=sum(list)/(len(list))
print('%.2f' %long)

发表于 2019-09-01 10:16:57 回复(0)
#include<iostream>
usingnamespacestd;
intmain(){
    inti;
    intcount=0;
    intcur;
    floatsum=0;
    floatavg;
    chars[1000];
    scanf("%s",s);
    for(i=0;s[i]!='\0';i++){
        cur=1;
        while(s[i+1]!='\0'&&s[i]==s[i+1]){
            i++;
            cur++;
        }
        count++;
        sum=sum+cur;
    }
    avg=sum/count;
    printf("%.2f",avg);
}
发表于 2019-08-03 11:35:54 回复(0)