hihocoder_Browser Caching

描述
When you browse the Internet, browser usually caches some documents to reduce the time cost of fetching them from remote servers. Let's consider a simplified caching problem. Assume the size of browser's cache can store M pages. When user visits some URL, browser will search it in the cache first. If the page is already cached browser will fetch it from the cache, otherwise browser will fetch it from the Internet and store it in the cache. When the cache is full and browser need to store a new page, the least recently visited page will be discarded.
Now, given a user's browsing history please tell us where did browser fetch the pages, from the cache or the Internet? At the beginning browser's cache is empty.
输入
Line 1: Two integers N(1 <= N <= 20000) and M(1 <= M <= 5000). N is the number of pages visited and M is the cache size.
Line 2~N+1: Each line contains a string consisting of no more than 30 lower letters, digits and dots('.') which is the URL of the page. Different URLs always lead to different pages. For example www.bing.com and bing.com are considered as different pages by browser.
输出
Line 1~N: For each URL in the input, output "Cache" or "Internet".
提示
Pages in the cache before visiting 1st URL [null, null]
Pages in the cache before visiting 2nd URL [www.bing.com(1), null]
Pages in the cache before visiting 3rd URL [www.bing.com(1), www.microsoft.com(2)]
Pages in the cache before visiting 4th URL [www.bing.com(1), www.microsoft.com(3)]
Pages in the cache before visiting 5th URL [windows.microsoft.com(4), www.microsoft.com(3)]
The number in parentheses is the last visiting timestamp of the page.
样例输入
5 2
www.bing.com
www.microsoft.com
www.microsoft.com
windows.microsoft.com
www.bing.com
样例输出
Internet
Internet
Cache
Internet
Internet

题目大概意思:n个网站,缓存大小m,如果缓存中有网站则将前一个网站移除输出"Cache",添加到最后;如过超过缓存m将历史率先访问的网站移除,输出"Internet",没满继续添加扔输出"Internet"。

Java代码

import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();//网站数量
        int m = sc.nextInt();//缓存容量
        ArrayList list = new ArrayList();
        String[] ans = new String[n];
        for(int i = 0; i < n; i++) {
            String str = sc.next();
            if(list.contains(str)) {//包含网站,删除并且添加到最后
                list.remove(str);
                list.add(str);
                ans[i] = new String("Cache");
            }else {
                if(list.size() >= m) {//超过缓存m将最近访问的网站移除
                    list.remove(0);
                    list.add(str);
                    ans[i] = new String("Internet");
                }else {
                    list.add(str);
                    ans[i] = new String("Internet");
                }
            }
        }
        for (String s : ans) {
            System.out.println(s);
        }
    }
}

你可能感兴趣的:(hihocoder_Browser Caching)