Java实现字串统计
对字符串的操作,无论再难的算法题,只要时间充足,相信每个同学都可以搞定。
但是浪费太多时间去搞一个逻辑算法没太大意义,学会学习,不但可以增长自己的知识,更可以节省时间,俗话说,一寸光阴一寸金,寸金难买寸光阴。
我在写这个算法之前,也在网上查过,只是网上的答案太长了,所以就想把自己的结果写出来,供大家参考,如果有问题,希望可以及时提出。
题目:
第二行是字符串S。
L大于0,且不超过S的长度。
输入样例1:
4
bbaabbaaaaa
输出样例1:
bbaa
输入样例2:
2
bbaabbaaaaa
输出样例2:
aa
S中所有字符都是小写英文字母。
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
String str = scan.next();
String res = maxLetter(str,n);
System.out.println(res);
}
private static String maxLetter(String str,int n){
int m=0, tmp=0;
String st;
String res = null;
int mm=0, maxLen = 0;
int len = str.length();
Map<String,Object> arr = new LinkedHashMap<String,Object>();
Map<Object, Integer> mp = new LinkedHashMap<Object, Integer>();
//将字符串按条件拆分,组合成键(子串)值(子串出现的次数)对应的集合
//同时取出出现次数最多的次数
for(int i=n; i<=len; i++){
for(int k=0; k<len-i+1; k++){
st = str.substring(k, k+i);
if(arr.get(st) != null){
tmp = Integer.parseInt(String.valueOf(arr.get(st)));
arr.put(st, tmp+1);
}else{
arr.put(st, 1);
}
m = Math.max(m, Integer.parseInt(String.valueOf(arr.get(st))));
}
}
//运用迭代遍历的方式取出出现次数最多的子串,重新组合键(字符串)值(字符串长度)的集合
//因为可能会出现字符串出现次数相同,但字符串长度不同的情况,所以还要运用变量记录每个字符串的长度进行比较
//如果没有比第一个字符串长度更大的字符串,就去第一个,如果有,就取出相应的字符串
Iterator<?> it = arr.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
int value = Integer.parseInt(String.valueOf(entry.getValue()));
Object key = entry.getKey();
if(value==m){
value = String.valueOf(entry.getKey()).length();
mp.put(key, value);
mm = Math.max(mm, value);
}
if(mm>maxLen){
res = (String) key;
maxLen = mm;
}
}
// System.out.println(mm+" "+mp);
// System.out.println(maxLen+" "+res);
// System.out.println(m+" "+arr);
return res;
}
}
Java实现字串统计的更多相关文章
- Java实现 蓝桥杯 算法训练 字串统计
算法训练 字串统计 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最 ...
- java 蓝桥杯算法提高 字串统计
思路:这道题用HashMap来保存枚举的字串,key值保存字串-value值保存字串所出现的次数: 通过for循环并使用subString()方法枚举所有符合要求的子串maxStr记录 ...
- [蓝桥杯]ALGO-87.算法训练_字串统计
问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然有多个,输出第一次出现最早的. 输入格式 第一行一个 ...
- 算法笔记_061:蓝桥杯练习 字串统计(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然 ...
- java 复制字串算法
public class Copy { public static void copy(char[] s, char[] t){ int i=0; for(i=0; i<s.length; i+ ...
- HDOJ 1261 字串数
JAVA大数.... 字串数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- 字串数_hdu_1261(大数极致).java
字串数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submis ...
- java字串加密
字串加密 1.设计思想: (1)加密方法,字符串的每一个字符都代表这个字符往后的第三位,最后三个字符代表,开始的三个字符. (2)解密方法,字符串的每一个字符都代表这个字符往前的第三位,开始三个字符代 ...
- Java如何计数字串中的一组词组?
在Java编程中,如何计数字串中的一组词组? 以下示例演示如何使用regex.Matcher类的matcher.groupCount()方法来计算字符串中的一组词组. package com.yiib ...
随机推荐
- GitHub使用--01
1.Git下载与安装 Git网站下载地址https://git-scm.com/downloads 2.本地Git使用 在存储代码仓库的文件夹下右键 git bash here 初始化仓库 git i ...
- Python字符串、组合数据类型练习
一.Python字符串练习 1.http://news.gzcc.cn/html/2017/xiaoyuanxinwen_1027/8443.html 取得校园新闻的编号. (这个方法就很多了,一般方 ...
- MYSQL 删除语句(数据)
删除数据(DELETE) 如果你失忆了,希望你能想起曾经为了追求梦想的你. 数据库存储数据,总会有一些垃圾数据,也会有一些不需要用的数据了,这些情况下,我们就可以删除这些数据,释放出一定的 ...
- 非JAVA WEB项目提供Http接口调用实现
package com.monitor.app.utils; import com.alibaba.fastjson.JSON; import com.google.gson.Gson; import ...
- Mybatis和hibernate的优缺点比较
介绍: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力点在于POJO 与S ...
- RAD Studio 10.3.2七大新功能介绍
RAD Studio 10.3.2七大新功能 Delphi支持macOS 64位应用的开发. C++Builder中Windows 64位平台支持C ++ 17特性. C ++ LSP 代码洞察改进. ...
- export命令用来设置环境变量。
sh-# export export CONSOLE="/dev/console" export HOME="/" export LD_LIBRARY_PATH ...
- imx6 yocto移植 环境搭建
系统:ubuntu14.04 LTS 切换软件下载源,确保下载资源是最快. 安装必要软件工具: ~$ apt-get install vim ~$ apt-get install openssh-se ...
- visio的形状默认是蓝色的填充色,怎么设置为白色为默认色?
如图所示: 设计->主题->选黑白那个 效果如下:
- java-面试题为什么redis这么快
文章:为什么说Redis是单线程的以及Redis为什么这么快! 文章比较详细,有些细节可能需要注意. 1,比如CPU不是redis的瓶颈 2,随着连接数的增加,并发会降低等.