首页 > 试题广场 >

字符串碎片

[编程题]字符串碎片
  • 热度指数:16987 时间限制: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.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String str = input.nextLine();
        double count=1;
        for(int i = 0 ; i < str.length()-1;i++){
            if(str.charAt(i) != str.charAt(i+1)){
                count++;
            }
        }
        System.out.println(String.format("%.2f", str.length()/count));
    }
}
发表于 2018-08-08 16:17:40 回复(0)
import java.util.*;
public class Main
{
public static void main(String arg[])
    {
        Scanner a=new Scanner(System.in);
        boolean flag=true;
        String s1=new String(); 
        double num=1;
        
        while(flag)
        {
            s1=a.nextLine();
            flag=false;
            if(s1.length()<1||s1.length()>50)
            {
                System.out.println("输入错误,请重新输入");
                flag=true;
            }
            else 
                a.close();
        }
        
        for(int i=0;i<s1.length()-1;i++)
        {
            if(s1.charAt(i)!=s1.charAt(i+1))
            {
                num++;
            }
        }
       double sum=s1.length()/num;
       //System.out.printf("%.2f",sum);
    System.out.println(String.format("%.2f", sum));
}
}
发表于 2018-04-28 13:30:11 回复(0)
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
public class Main {
    public static void main(String[] args) {
        Scanner num = new Scanner(System.in);
        String str = num.next();
        char[] s1 = str.toCharArray();
        StringBuffer sb = new StringBuffer();
        for(int i=0;i<s1.length;i++){
            String t = String.valueOf(s1[i]);
            sb.append(t);
            if(i!=s1.length-1){
                String t2 = String.valueOf(s1[i+1]);
                if(!t.equals(t2)){
                    sb.append(",");
                }
            }
        }
        //System.out.println("分割碎片:"+sb);
        String[] c = sb.toString().split(",");
        Set<String> set = new HashSet<String>();
        for(int i=0;i<c.length;i++){
            set.add(c[i]);
        }
        //System.out.println("碎片元素:"+set);
        
        int cc = 0;
        for(int i=0;i<c.length;i++){
            cc += c[i].length();
        }
        double db = (double)cc/c.length;
        DecimalFormat df = new DecimalFormat("#.00");
        System.out.println(df.format(db));
        
    }
}


编辑于 2018-03-14 20:49:37 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        //System.out.print("请输入一个字符串:");
        String test = input.nextLine();
        System.out.print(avgLength(test));        
    }
    
    public static String avgLength(String s){
        double result = 0;
        int count = 1;
        int sum = 1;
        char[] chars = s.toCharArray();
        for(int i = 0; i < chars.length - 1; i++){
            if(chars[i] == chars[i + 1]){
                count++;
                if(i == chars.length - 2)
                    result += count;
            }else {
                result += count;
                if(i == chars.length - 2)
                    result++;
                count = 1;
                sum++;
            }
        }
        
        return String.format("%.2f", result/sum);
    }
}
发表于 2017-10-09 21:11:13 回复(1)
import java.util.Scanner;

public class Main{
    
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String tar = input;
if (tar == null)
System.out.printf("0");
double nums = 1;
double total = tar.length();
for (int i = 0; i < tar.length(); i++) {
if (i == tar.length() - 1) {
break;
}
if (tar.charAt(i) != tar.charAt(i + 1)) {
nums++;
}
}
double res = total / nums;
System.out.println(String.format("%.2f", res));
}
}
发表于 2017-09-14 14:27:58 回复(0)
import java.util.Scanner;
import java.util.ArrayList;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        String line = sc.nextLine();
        
        System.out.printf("%.2f\n", getAveLen(line));
    }
    
    public static float getAveLen(String s) {
        ArrayList<String> list = new ArrayList<>();
        
		Pattern p = Pattern.compile("([a-z])\\1*");
        Matcher m = p.matcher(s);
        
        while(m.find()) {
        	list.add(m.group());
        }
        
        float sumLen = 0;
        
        for(String str : list) {
            sumLen += str.length();
        }
        
        return sumLen/list.size();
    }
}

发表于 2017-09-10 20:15:02 回复(6)
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextLine()) {
            String s1 = sc.nextLine();
            char[] nums = s1.toCharArray();
            char last = nums[0];
            List<Integer> list = new ArrayList<Integer>();
            int count = 1;
            for (int i=1; i<nums.length;i++) {
                if (nums[i] == last) {
                    count++;
                } else {
                    list.add(count);
                    last = nums[i];
                    count = 1;
                }
            }
            list.add(count);
            double sum = 0.0;
            for (int i=0; i<list.size(); i++) {
                sum += list.get(i);
            }
            sum = (sum / list.size());
            System.out.println(String.format("%.2f", sum));
        }
    }
}
编辑于 2017-09-10 12:01:59 回复(0)

热门推荐

通过挑战的用户

字符串碎片