1. 程式人生 > >網易[程式設計題] 字串碎片

網易[程式設計題] 字串碎片

一個由小寫字母組成的字串可以看成一些同一字母的最大碎片組成的。例如,"aaabbaaac"是由下面碎片組成的:'aaa','bb','c'。牛牛現在給定一個字串,請你幫助計算這個字串的所有碎片的平均長度是多少。

輸入描述:
輸入包括一個字串s,字串s的長度length(1 ≤ length ≤ 50),s只含小寫字母('a'-'z')


輸出描述:
輸出一個整數,表示所有碎片的平均長度,四捨五入保留兩位小數。

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

輸入例子1:
aaabbaaac

輸出例子1:

2.25

這題的關鍵一個是判斷碎片長度,一個是保留兩位小數

碎片長度通過比較前一個字母和後一個字母是否相同來確定

保留為小數通過以下形式保留

double d = 3.1415926;
String result = String.format("%.2f"
, d);
當然也可以以以下形式
double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

不過我選擇了第一種。

下為程式碼:

import java.util.*;
public class Main
{
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        String s=sc.nextLine();
        char[]m=s.toCharArray();
        double count=1;
        for(int i=0;i<m.length-1;i++)
        {
            if(m[i]!=m[i+1])
                count++;
        }
        double d=((double)s.length()/count);
        String res=String.format("%.2f",d);
        System.out.print(res);
    }
}