análisis de correlación carácter de Java Blue Bridge

[Descripción del problema]
Xiao Ming está analizando la correlación entre un personaje en la novela. En la novela, que quería saber cuántas veces Alice y Bob simultáneamente.
Más precisamente, Xiao Ming define Alice y Bob significa "simultáneos": no más de K caracteres en la novela texto entre Alice y Bob.
Por ejemplo, el siguiente texto :. ThisisastoryaboutAliceandBob.AlicewantstosendaprivatemessagetoBob
suponiendo K = 20, a continuación, Alice y Bob también apareció dos veces, a saber, "Alice y Bob" y "Bob Alice.". El primero cinco caracteres entre Alice y Bob, que tiene dos caracteres.
Nota:
1. Alice y Bob son mayúsculas y minúsculas, Bob Alice, o similar no se tiene en cuenta.
2. 2. Alice y Bob deben ser palabras separadas, antes o después de puntuacion y espacios, pero no la letra. Por ejemplo Bobbi no es la aparición de Bob.
[Formato de entrada
de la primera fila contiene un número entero K. La segunda línea contiene una cadena de líneas contiene sólo letras mayúsculas y minúsculas, puntuacion y espacios. Una longitud de no más de 1.000.000.
[] Formato de salida
de salida de un entero que representa el número de ocurrencia simultánea de Alice y Bob.
[] De entrada de muestra
20 es
Esta es una historia sobre Alice y Bob.Alice aprivate quiere enviar el Mensaje a Bob.
Análisis Título; cada cadena de palabra se almacena en la matriz, y que Bob, Alice compara
Código es el siguiente:
Importación java.util.Scanner;

cxl public class {

public static void main(String[] args)  {
	Scanner input=new Scanner(System.in);
	int num,sum=0;
	String s="";
	num=input.nextInt();
	input.nextLine();//nextLine吸取回车键
	s=input.nextLine();
	//将空格和.分割出来,注意空格和.的组合存放为空字符串
	String a[]=s.split("\\s+|\\.");//每个单词存入一个数组中
	int zo=sta(num,a,sum);
	int zoo=sta1(num,a,sum);
	System.out.println(zo+zoo);
	
}
static int sta(int num,String a[],int sum) {//先判断Bob
	for(int i=0;i<a.length;i++) {
		if(a[i].equals("Bob")) {
			for(int j=i+1;j<a.length;j++) {
				if(a[j].equals("Alice")) {
					int sum1=1;
					for(int z=i+1;z<j;z++) {//比较Bob到Alice之间的单词数小于20
						sum1+=a[z].length()+1;
					}
					if(sum1<=num)
						sum++;
				}
			}
		}
	}
	return sum;
}
static int sta1(int num,String a[],int sum) {//先判断Alice
	for(int i=0;i<a.length;i++) {
		if(a[i].equals("Alice")) {
			for(int j=i+1;j<a.length;j++) {
				if(a[j].equals("Bob")) {
					int sum1=1;
					for(int z=i+1;z<j;z++) {
						sum1+=a[z].length()+1;
					}
					if(sum1<=num)
						sum++;
				}
			}
		}
	}
	return sum;
}

}
Si tiene cualquier algoritmo mejor, por favor avise. Gracias! ! !

Publicado 13 artículos originales · ganado elogios 0 · Vistas 120

Supongo que te gusta

Origin blog.csdn.net/vi_to/article/details/104933806
Recomendado
Clasificación