import java.util.List; import java.util.ArrayList; import java.util.Scanner; import javax.swing.text.DefaultEditorKit.InsertBreakAction; public class Main { static List<String> list = new ArrayList();//用来保存分割后的字符串 static List<Integer> art = new ArrayList<>();//记录.出现的位置 static int number = 0; public static void print() { for(String b:list) { System.out.println(b); } } public static void fun(String string) { int count = 0; char crt[] = string.toCharArray();//将字符串转为字符数组 for(char b:crt) { if(b == ‘ ‘) count++; else if(b == ‘.‘) { art.add(count); count++; } } } public static void insert()//将‘.‘插入到list中。 { int sum = 0; for(int i:art) { sum++; list.add(i+sum,".");//将指定的元素添加到指定的位置 } } public static void lon(List<String> list2,int k)//判断两个之间长度是否小于k { int lonK = 0; for(String str1:list2) { lonK += str1.length(); } if(lonK<=k) { number++; } } public static void ifmanzu(int k)//判断是否满组条件的个数 { //list.sublList(0,3) //将字符串的0到3,取出来 int begin = 0; List<String> list1 = list.subList(begin, list.size()); while(true) { //System.out.println(list1); int a1 = list1.indexOf("Alice");//找出列表中Allice 第一次出现的位置 int b1 = list1.indexOf("Bob");//找到列表中Bob第一次出现的位置 if(a1==-1||b1==-1)//没有同时出现的了 { break; } if(a1<b1)//表示a1在前面 { lon(list1.subList(a1+1, b1), k); list1.remove(a1);//移除 } else { lon(list1.subList(b1+1, a1), k); list1.remove(b1); } } } public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner = new Scanner(System.in); int k = scanner.nextInt(); Scanner scanner1 = new Scanner(System.in); String string = scanner1.nextLine(); fun(string); //String [] a = string.split("\\s+");//按空格截取 String [] a = string.split("[ \\.]"); for(String b:a) { list.add(b); } insert();//将‘.‘插入到list中 ifmanzu(k); System.out.println(number); //System.out.println(art); } }
原文:https://www.cnblogs.com/zkw123/p/11966930.html