大厂算法例题解之网易2018秋招笔试真题 (未完)

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
分析:总长度固定,为s的长,只需要得到有多少个碎片,用一个变量c,暂时存储当前字符,向后循环,当不等时,用c记录新值,只需要一次循环,O(n)。

  • 注意1
    Java四舍五入保留两位小数的方法(注意format中的引号 format返回后是String)
    double d = 3.1415;
    1. String.format("%.2f",d);
    2. DecimalFormat df = new DecimalFormat("0.00");
    	df.format(d)
    
import java.text.DecimalFormat;

public class Test {
    public static void main(String[] args) {
        double x = 3.14159;
        double y = 3.00001;

//        double
        System.out.println(String.format("%.4f", x));//x=3.1416 都是四舍五入进位
        System.out.println(String.format("%.4f", y));//y=3.0000

        DecimalFormat df = new DecimalFormat("0.0000");
        System.out.println(df.format(x));//x=3.1416 返回的都是字符串
        System.out.println(df.format(y));//y=3.0000

        DecimalFormat df2 = new DecimalFormat("#.####");
        System.out.println(df2.format(x));//x=3.1416
        System.out.println(df2.format(y));//y=3 #号形式四舍五入之后保留小数点后两个非零数,如果只有一个就保存一个,一个都没有就保留到整数位
    }
}

【答案及解析】

#include <bits/stdc++.h> 
using namespace std; 
string s; 
int main() { 
    cin >> s; 
    char c = s[0]; 
    double n = 1, d; 
    for(int i = 1; i < s.size(); i++) { 
        if(c != s[i]) { 
            c = s[i]; 
            n++; 
        } 
    } 
    d = (double)s.size() / n; 
    printf("%.2lf\n", d); 
    return 0; 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值