首页 > 代码库 > java 蓝桥杯算法提高 字串统计
java 蓝桥杯算法提高 字串统计
思路:这道题用HashMap来保存枚举的字串,key值保存字串-value值保存字串所出现的次数;
通过for循环并使用subString()方法枚举所有符合要求的子串maxStr记录出现次数最多的字串,
maxValue记录其出现的次数
1截取到的长度大于等于l的子串先比较是否已经存在map里, 1.1若存在,取出它的次数并+1。和最大次数比较 1.1.1若大于最大次数,将这个次数赋给最大次数,并且将子串赋给最大次数的子串 1.1.2若等于最大次数,再判断这两个子串哪一个的长度大,长度大的为记录的那个最大次数子串 1.2将处理好的子串和次数,存进map里 1.3若不存在,则将新串和0存进map里
1 import java.util.HashMap; 2 import java.util.Map; 3 import java.util.Scanner; 4 public class _87子串统计 { 5 public static void main(String[] args) { 6 Scanner scanner = new Scanner(System.in) ; 7 int l= scanner.nextInt(); 8 String s = scanner.next(); 9 //String 保存子串,int保存次数10 Map<String, Integer> map = new HashMap<String,Integer>();11 int maxValue = http://www.mamicode.com/0;//最大次数12 String maxStr = "";//出现最大次数的子串13 for (int i = 0; i < s.length()-l+1; i++) {14 for (int j = i+l; j < s.length(); j++) {15 String string = s.substring(i, j);//枚举截取长度大于等于l的字符串16 if (map.containsKey(string)) {//若该字符串之前出现过则map(key,value)中value值+123 int value =http://www.mamicode.com/ map.get(string);24 value++;25 if (value>maxValue) {26 maxValue =http://www.mamicode.com/ value;27 maxStr = string;28 }else if(value =http://www.mamicode.com/= maxValue){29 if (maxStr.length() < string.length()) { //若该字符串出现的次数与当前出现次数最多的字符串相等,则比较两个字符串的长度,取字符串长的30 maxStr = string;31 }32 }33 map.put(string, value);34 }else{//若该字符串之前并未出现过则添加,并初始化value值为035 map.put(string, 0);36 }37 }38 }39 System.out.println(maxStr);40 }41 }
java 蓝桥杯算法提高 字串统计
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。