本文主要是介绍大厂算法例题解之网易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;// doubleSystem.out.println(String.format("%.4f", x));//x=3.1416 都是四舍五入进位System.out.println(String.format("%.4f", y));//y=3.0000DecimalFormat df = new DecimalFormat("0.0000");System.out.println(df.format(x));//x=3.1416 返回的都是字符串System.out.println(df.format(y));//y=3.0000DecimalFormat df2 = new DecimalFormat("#.####");System.out.println(df2.format(x));//x=3.1416System.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;
}
这篇关于大厂算法例题解之网易2018秋招笔试真题 (未完)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!