2986167_ac_640ms_23824k.java

来自「北大大牛代码 1240道题的原代码 超级权威」· Java 代码 · 共 48 行

JAVA
48
字号
import java.util.*;

public class Main {

	static byte t[] = new byte [16000001];
	static int tmp[] = new int [257];
	static String str;
	static int up;
	
	public static void main(String[] args) 
	{
		Scanner cin = new Scanner (System.in);
		int n, nc;
		
		n = cin.nextInt();
		nc = cin.nextInt();
		str = cin.next();
		up = 0;
		for(int i = 0; i < tmp.length; i++)
			tmp[i] = -1;
		solve(n,nc);
	}

	private static void solve(int n, int nc) {

		int i, j;
	    int len = str.length();
	    
	    for(i = 0; i < len - n + 1 ; i++)
	    {
	        int r = 0;
	        for(j = i; j < n + i; j++)
	        r = r * nc + fun(str.charAt(j));
	        t[r]=1;
	    }
	    int re = 0;
	    for(i=0;i<16000000;i++)if(t[i]==1)re++;
	    System.out.println(re);
	}

	private static int fun(char c) {

	if(tmp[c]<0)tmp[c] = up++;
	    return tmp[c];
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?