Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

once ac (java code)

Posted by fishing_test at 2009-05-12 21:40:42 on Problem 1200
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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator