解题思路

这是一个集合操作问题。具体要求:

  1. 网页上有 个超链接,每个链接有唯一的名称
  2. 用户点击了 个链接,被点击的链接会变成紫色
  3. 需要输出剩余蓝色(未被点击)的链接名称
  4. 输出需要按照字典序排序

解决方案:

  1. 使用集合(set)存储所有链接
  2. 遍历被点击的链接并从集合中删除
  3. 最后输出集合中剩余的链接

代码

#include <cstdio>
#include <set>
#include <string>
using namespace std;

int main() {
    // 读入初始链接
    int n;
    scanf("%d", &n);
    set<string> links;  // 使用set自动排序
    
    for(int i = 0; i < n; ++i) {
        char c[101];
        scanf("%s", c);
        links.insert(string(c));
    }
    
    // 处理点击的链接
    int m;
    scanf("%d", &m);
    for(int i = 0; i < m; ++i) {
        char c[101];
        scanf("%s", c);
        string clicked = c;
        // 如果找到链接则删除
        if(links.find(clicked) != links.end()) {
            links.erase(clicked);
        }
    }
    
    // 输出剩余的蓝色链接
    for(const auto &link : links) {
        printf("%s\n", link.c_str());
    }
    
    return 0;
}
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 读入初始链接
        int n = sc.nextInt();
        TreeSet<String> links = new TreeSet<>();  // 使用TreeSet自动排序
        
        for(int i = 0; i < n; i++) {
            String link = sc.next();
            links.add(link);
        }
        
        // 处理点击的链接
        int m = sc.nextInt();
        for(int i = 0; i < m; i++) {
            String clicked = sc.next();
            links.remove(clicked);
        }
        
        // 输出剩余的蓝色链接
        for(String link : links) {
            System.out.println(link);
        }
    }
}
def solve():
    # 读入初始链接
    n = int(input())
    links = set()
    
    for _ in range(n):
        link = input().strip()
        links.add(link)
    
    # 处理点击的链接
    m = int(input())
    for _ in range(m):
        clicked = input().strip()
        if clicked in links:
            links.remove(clicked)
    
    # 输出剩余的蓝色链接(按字典序排序)
    for link in sorted(links):
        print(link)

if __name__ == "__main__":
    solve()

算法及复杂度

  • 算法:集合操作
  • 时间复杂度: - 插入和删除操作都是
  • 空间复杂度: - 需要存储所有链接