首页 > 试题广场 >

字符串碎片

[编程题]字符串碎片
  • 热度指数:366 时间限制: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
public class Main{
    public static void main(String[]args){
        Scanner sc = new Scanner(System.in);
       
        while(sc.hasNext()){
            String str = sc.nextLine();
            List<Integer> list = new ArrayList<>();
            int count = 1;
            for(int i=0; i< str.length()-1; i++){
                char c = str.charAt(i);
                if(str.charAt(i+1) == c) count++;
                else{
                    list.add(count);
                    count =1;
                }
            }
            list.add(count);
            int sum =0, length = list.size();
            for(int i =0; i < length; i++){
                sum+=list.get(i);
            }
            return sum/length;
            
        }
    }
}

发表于 2020-09-05 10:55:03 回复(0)
def fun(str):
    count=1
    for i in range(1,str.__len__()):
        if str[i]==str[i-1]:
            continue
        else:
            count+=1
    return count
str=input()
print('%.2f'%(str.__len__()/fun(str)))
发表于 2018-09-14 22:32:11 回复(0)

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    String s = in.next();
    in.close();
    char[] c = s.toCharArray();
    char a = c[0];
    int n = 1;
    float f;
    for(int i = 1; i < c.length ; i++){
        if(a != c[i]){
            a = c[i];
            n++;
        }
    }

    f = (float)c.length / n;
    System.out.println(String.format("%.2f", f));
}

}

发表于 2018-08-29 15:26:22 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            String str = scan.nextLine();
            List<Integer> list = new ArrayList<>();
            int count = 1;
            for (int i = 0; i < str.length() - 1; i++) {
                char temp = str.charAt(i);
                if (str.charAt(i + 1) == temp) {
                    count++;
                } else {
                    list.add(count);
                    count = 1;
                }
            }
            list.add(count);
            int sum = 0, length = list.size();
            for (int i = 0; i < length; i++) {
                sum += list.get(i);
            }
            double averLength = (double) sum / length;
            System.out.printf("%.2f", averLength);
        }
    }
}
发表于 2018-08-12 12:30:32 回复(0)