蓝桥杯-算法训练-ALGO-87 字串统计 Java实现
2017-03-13 16:37
531 查看
问题描述
给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。
输入格式
第一行一个数字L。
第二行是字符串S。
L大于0,且不超过S的长度。
输出格式
一行,题目要求的字符串。
输入样例1:
4
bbaabbaaaaa
输出样例1:
bbaa
输入样例2:
2
bbaabbaaaaa
输出样例2:
aa
数据规模和约定
n<=60
S中所有字符都是小写英文字母。
提示
枚举所有可能的子串,统计出现次数,找出符合条件的那个
我自己写的满分代码如下,使用Map实现,如有不足之处,还望提出指教!
给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的。
输入格式
第一行一个数字L。
第二行是字符串S。
L大于0,且不超过S的长度。
输出格式
一行,题目要求的字符串。
输入样例1:
4
bbaabbaaaaa
输出样例1:
bbaa
输入样例2:
2
bbaabbaaaaa
输出样例2:
aa
数据规模和约定
n<=60
S中所有字符都是小写英文字母。
提示
枚举所有可能的子串,统计出现次数,找出符合条件的那个
我自己写的满分代码如下,使用Map实现,如有不足之处,还望提出指教!
import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Scanner; public class Test30 { public static void main(String[] args) { Scanner input = new Scanner(System.in); int L = input.nextInt() - 1; String str = input.next(); int max = 0; int maxLength = 0; String str1 = null; List<String> strList = new ArrayList<String>(); Map<String,Integer> hashMap = new LinkedHashMap<String,Integer>(); //获取输入字符串的所有子串 for(int j = 0;j < str.length();j++){ L += 1; for(int i = 0;i < str.length() - L + 1;i++){ if(hashMap.containsKey(str.substring(i,L+i))){ int num = (int)hashMap.get(str.substring(i,L+i)); hashMap.put(str.substring(i,L+i), ++num); } else hashMap.put(str.substring(i,L+i), 1); } } //寻找子串出现最多的次数 for(int number : hashMap.values()){ if(number >= max){ max = number; } } //将出现最多次数的子串存入一个list数组中 for(Entry<String,Integer> s : hashMap.entrySet()){ if(s.getValue() == max){ strList.add(s.getKey()); } } //若子串长度不同,取最长的那个 //由于LinkedHashMap是按照最后访问的顺序存储的,所以输出第一次出现最早这个条件可以忽略 maxLength = strList.get(0).length(); for(String s : strList){ if(s.length() > maxLength){ maxLength = s.length(); str1 = s; } } if(maxLength == strList.get(0).length()) System.out.println(strList.get(0)); else System.out.println(str1); } }
相关文章推荐
- 蓝桥杯 ALGO-87 算法训练 字串统计
- 蓝桥杯 算法训练 字串统计 JAVA
- 蓝桥杯 ALGO-88 算法训练 字串统计
- 蓝桥杯_算法训练_字串统计(用HashMap实现)
- 蓝桥杯-算法训练-字串统计-Java
- 蓝桥杯-算法训练-字串统计-Java
- 算法-蓝桥杯-算法训练 字串统计 (JAVA)
- 蓝桥杯 - 算法训练 字串统计 C语言实现
- 蓝桥杯 算法训练 字串统计
- 蓝桥杯 ALGO-58 算法训练 字串逆序
- 蓝桥杯ALGO-113——算法训练 数的统计
- 蓝桥杯--算法训练 字串统计
- 蓝桥杯算法训练单词接龙(DFS)java实现
- 蓝桥杯 ALGO-21算法训练 装箱问题 java版
- 蓝桥杯 算法训练 字串统计
- 算法笔记_061:蓝桥杯练习 字串统计(Java)
- 算法笔记_061-蓝桥杯练习 字串统计(Java)
- 蓝桥杯 ALGO-148 算法训练 5-1最小公倍数 java版
- 蓝桥杯 ALGO-113 算法训练 数的统计
- 蓝桥杯 ALGO-27 算法训练 FBI树 Java版