[网易2018校招java笔试题]字符串碎片(java语言实现)
2018-01-23 21:45
459 查看
题目描述:
[编程题] 字符串碎片
时间限制:1秒
空间限制:32768K
一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"aaabbaaac"是由下面碎片组成的:'aaa','bb','c'。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少。
输入描述:
输出描述:
输入例子1:
输出例子1:
解题思路:
先将字符串“wwwwssffiuuuuusssssooooolllsssssshhhhcccchhhhhllo"中的各个字符出现的次数记录成一个数组。然后在将该数组求一下平均值,最后再结果上做一个四舍五入也即是输出结果格式化。
实现代码(JAVA语言):
总结:本算法题的实现思路并不难,基础知识对于循环和条件的结构有所考察,对结果的处理要求使用四舍五入的格式保留两位数。考察的综合能力比较强。所以大家一定要重视基础知识。
[编程题] 字符串碎片
时间限制:1秒
空间限制:32768K
一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,"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
解题思路:
先将字符串“wwwwssffiuuuuusssssooooolllsssssshhhhcccchhhhhllo"中的各个字符出现的次数记录成一个数组。然后在将该数组求一下平均值,最后再结果上做一个四舍五入也即是输出结果格式化。
实现代码(JAVA语言):
import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Scanner; public class StringNum { public static void main(String[] args) { Scanner in = new Scanner(System.in); String num = in.nextLine(); int nub = 1; char[] s1 = num.toCharArray(); for (int i = 0; i < s1.length - 1; i++) { if (s1[i] != s1[i + 1]) nub++; //计算出所有字母的种类 } int s[] = new int[nub]; //计算出每种字母出现的次数 for (int i = 0, j = 0; i < s1.length; i++) { if (i < s1.length - 2) { if (s1[i] == s1[i + 1]) { s[j] = s[j] + 1; } else if (s1[i] != s1[i + 1]) { s[j] = s[j] + 1; j++; } } else if (i == s1.length - 2) { if (s1[i] == s1[i + 1]) s[j] = s[j] + 2; else if (s1[i] != s1[i + 1]) { s[j] = s[j] + 1; s[j + 1] = s[j + 1] + 1; } } } float result =0 ; for(int ss: s) { result +=ss; } double result1 = result/s.length; java.text.DecimalFormat df =new java.text.DecimalFormat("#.00"); String str = df.format(result1); System.out.println(str); //BigDecimal re = new BigDecimal(result + ""); //这种方法也可以做精度最格式化 //System.out.println(re.divide(BigDecimal.valueOf(nub), 2, RoundingMode.HALF_UP).toString()); } }
总结:本算法题的实现思路并不难,基础知识对于循环和条件的结构有所考察,对结果的处理要求使用四舍五入的格式保留两位数。考察的综合能力比较强。所以大家一定要重视基础知识。
相关文章推荐
- (网易2018校招笔试)[编程题] 字符串碎片
- (网易2018校招笔试)[编程题] 字符串碎片
- (网易2018校招笔试)[编程题] 字符串碎片
- 网易2018校招——03.字符串碎片
- 网易2018校招 字符串碎片
- 网易2018校招 字符串碎片
- 2017秋招,网易校招网络笔试第二题,java实现
- 华为校招上机笔试试题(B卷)——java实现
- 网易2018校招内推Android笔试编程题一道
- 网易、美团2018技术招聘编程题--java实现
- 8.12网易内推笔试题:小易喜欢的数列 java实现
- 网易2018校招内推笔试题
- 2018校招网易笔试——最长01交错子串
- 阿里2018校招内推笔试题-字符串切分
- 网易2018校招内推笔试-彩色砖块-python2,python3,C++解法
- 网易2018校招内推笔试-彩色砖块
- 华为校招上机笔试试题(A卷)——java实现
- 2018校招笔试题——网易编程题跳石板
- 网易乐得 线下笔试 求第N个丑数 Java实现
- 网易2018校招内推笔试-交错01串