字符串处理 字串问题

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;


//字符串的处理
public class StringAction {
public static void main(String[] args){
f();
}

//题目:一个字符串中,哪个子串(长度要求大于等于2)重复出现次数最多,如果有多个子串重复次数相同,取长度最大的子串。
// 1、求出所有的字串
// 2、找出对应字串在字符串中出现的次数
// 3、在所有的次数中找出最大值
// 4、根据最大值找出对应的字符串
// 分步思想 , 一步步解决问题 详细解剖解题
public static void f(){
String str = "abcfabcdabce";
ArrayList<String> list = new ArrayList<String>();
for(int i=0;i<str.length();i++){
// System.out.println("i 的值为:"+i);
for(int j=2;j<str.length()-i+1;j++){
// System.out.println("j 的值为:"+j+" 此时截取的字段为:"+str.substring(i,j+i));
list.add(str.substring(i,j+i));
}
}
Map<String,Integer> sum = new HashMap<String,Integer>();
for(int i=0;i<list.size();i++){
// System.out.println("此时用于比较的值为:"+list.get(i));
String temp = list.get(i);
int index = 0;
for(int j=0;j<list.size();j++){
//出现一次加一次
if(list.get(j).equals(list.get(i))){
index++;
}
}
// System.out.println(temp+":出现的总次数为:"+index);
sum.put(temp, index);
}
//取最大值
int maxValue = sum.get(list.get(0));
for(int i=0;i<sum.size();i++){
// System.out.println("此时的值:"+sum.get(list.get(i)));
if(sum.get(list.get(i))>maxValue){
maxValue=sum.get(i);
}
}
//存储有最大值的字串
ArrayList<String> a = new ArrayList<String>();
for(int i=0;i<sum.size();i++){
if(sum.get(list.get(i))==maxValue){
// System.out.println(list.get(i));
a.add(list.get(i));
}
}
// 取长的
int length = a.get(0).length();
String value = null;
for(int i=0;i<a.size();i++){
if(a.get(i).length()>length){
value=a.get(i);
}
}

System.out.println("最大的字串为:"+value+" 出现的次数为:"+sum.get(value));

}
}
//求这个题目的优化解
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值