Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
once ac (java code)import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashSet; import java.util.Set; public class Main { private static int[] count = new int[27]; private static int current = 0; private static int getCount() { int ret = 0; for (int i = 1; i <= 26; i++) { if (count[i] > 0) { ret++; } } return ret; } /** * @param args */ public static void main(String[] args) throws Exception { BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in)); String line = stdin.readLine(); String[] t = line.split("[ ]+"); int n = Integer.parseInt(t[0]); int nc = Integer.parseInt(t[1]); line = stdin.readLine(); int len = line.length(); Set<String> set = new HashSet<String>(); for (int i = 1; i <= 26; i++) { count[i] = 0; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < n; i++) { sb.append(line.charAt(i)); count[line.charAt(i) - 'a' + 1]++; } current = getCount(); if (current <= nc) { set.add(sb.toString()); } for (int i = n; i < len; i++) { char c = sb.charAt(0); sb.deleteCharAt(0); sb.append(line.charAt(i)); if (count[c - 'a' + 1] == 1) { current--; count[c - 'a' + 1]--; } else { count[c - 'a' + 1]--; } if (count[line.charAt(i) - 'a' + 1] == 0) { current++; count[line.charAt(i) - 'a' + 1]++; } else { count[line.charAt(i) - 'a' + 1]++; } set.add(sb.toString()); } System.out.println(set.size()); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator