CSP认证元素选择器

本文介绍了CSP认证中遇到的CSS选择器问题,重点在于理解如何利用元素的'.'数量表示层级,以及在处理标签选择器和ID选择器时的注意事项。难点在于正确匹配层级关系和处理大小写敏感性,输入处理需使用getLine()以应对可能的空格。
摘要由CSDN通过智能技术生成

这个题的css选择器我比较熟悉,居然卡在了90分,最后发现在大小写上出了问题

我看网上许多代码用到了树结构,实际上不需要用到树,直接用文档前面的‘.’的个数表示层级就行

题目分析:

  • 利用结构体存储每行的‘.’的个数、标签名、id名,在将结构体存入容器中
  • 单个的标签选择或id选择直接在容器中寻找
  • 多个选择器A B,遍历容器寻找B,在B的前面寻找是否有A标签(A可以是组合的)

难点

  • 在B的前面寻找是否有A标签,需要注意层级必须比B的层级地
  • 对与输入和输出中的标签选择器比较时需要注意大小写
  • 输入需要用getLine(),因为一行输入中可能存在空格
#include <iostream>

using namespace std;

#include <string>
#include <vector>
#include <algorithm>

typedef struct {
   
    int chengJi;
    string ss;
    string id;
}WD;

int getChengJi(const string &s) {
   
    int num = 0;
    while(s.find('.', num) != s.npos ) {
    //有'.'
        ++num;
    }
    return num;
}

void printByBiaoQian(const vector<WD> &v, string &s) {
   
    int num=0, i=1;
    vector<int> vv;
    vv.reserve(100);
    if (s.find('#') == s.npos) {
    //标签选择
        for (vector<WD>::const_iterator it=v.begin(); it!=v.end(); ++it) {
   
            if (it->ss == s) {
   
                ++num;
                vv.push_back(i);
            }
            ++i;
        }
    } else {
     //id选择
        for (vector<WD>::const_iterator it=v.begin(); it!=v.<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值