zl程序教程

您现在的位置是:首页 >  前端

当前栏目

1410. HTML 实体解析器-力扣双百代码-简洁做法

HTML代码 力扣 实体 简洁 解析器 做法 双百
2023-09-14 09:06:52 时间

1410. HTML 实体解析器-力扣双百代码

HTML 实体解析器」 是一种特殊的解析器,它将 HTML 代码作为输入,并用字符本身替换掉所有这些特殊的字符实体。

HTML 里这些特殊字符和它们对应的字符实体包括:

双引号:字符实体为 " ,对应的字符是 " 。
单引号:字符实体为 ' ,对应的字符是 ' 。
与符号:字符实体为 & ,对应对的字符是 & 。
大于号:字符实体为 > ,对应的字符是 > 。
小于号:字符实体为 &lt; ,对应的字符是 < 。
斜线号:字符实体为 &frasl; ,对应的字符是 / 。

给你输入字符串 text ,请你实现一个 HTML 实体解析器,返回解析器解析后的结果。

示例 1:

输入:text = “& is an HTML entity but &ambassador; is not.”
输出:“& is an HTML entity but &ambassador; is not.”
解释:解析器把字符实体 & 用 & 替换

示例 2:

输入:text = “and I quote: “…””
输出:“and I quote: “…””

示例 3:

输入:text = “Stay home! Practice on Leetcode 😃”
输出:“Stay home! Practice on Leetcode 😃”

示例 4:

输入:text = “x > y && x < y is always false”
输出:“x > y && x < y is always false”

示例 5:

输入:text = “leetcode.com⁄problemset⁄all”
输出:“leetcode.com/problemset/all”

解题代码如下,正常去做就可以啦:

char * entityParser(char * text){
    char a[6][8]={"&quot","&apos","&amp","&gt","&lt","&frasl"};
    char b[6]={'"','\'','&','>','<','/'};
    int arr[6]={5,5,4,3,3,6};
    int i;
    // for(i=0;i<6;i++){
    //     printf("%s %c ",a[i],b[i]);
    // }
    int size=0;
    for(i=0;text[i]!='\0';i++){
        if(text[i]=='&'){
            int index=i;
            int j;
            for( j=0;j<6;j++){
                int length=arr[j];
                int k=0;
                for( k=0;k<length;k++){
                    if(a[j][k]!=text[index+k]){
                        break;
                    }
                }
              //  printf("%d ",k);
                if(k==length&&text[index+k]!='&'){
                    text[size++]=b[j];
                    i=i+length;
                    break;

                }
            }
            if(j==6){
                text[size++]=text[i];

            }

        }
        else{
            text[size++]=text[i];
        }
    }
    text[size]='\0';
   // printf("text --%s ",text);


    return text;

}