# HTML Entity Parser

**HTML entity parser** is the parser that takes HTML code as input and replace all the entities of the special characters by the characters itself.

The special characters and their entities for HTML are:

* **Quotation Mark:** the entity is `&quot;` and symbol character is `"`.
* **Single Quote Mark:** the entity is `&apos;` and symbol character is `'`.
* **Ampersand:** the entity is `&amp;` and symbol character is `&`.
* **Greater Than Sign:** the entity is `&gt;` and symbol character is `>`.
* **Less Than Sign:** the entity is `&lt;` and symbol character is `<`.
* **Slash:** the entity is `&frasl;` and symbol character is `/`.

Given the input `text` string to the HTML parser, you have to implement the entity parser.

Return _the text_ after replacing the entities by the special characters.

**Example 1:**

```
Input: text = "&amp; is an HTML entity but &ambassador; is not."
Output: "& is an HTML entity but &ambassador; is not."
Explanation: The parser will replace the &amp; entity by &
```

**Example 2:**

```
Input: text = "and I quote: &quot;...&quot;"
Output: "and I quote: \"...\""
```

**Example 3:**

```
Input: text = "Stay home! Practice on Leetcode :)"
Output: "Stay home! Practice on Leetcode :)"
```

**Example 4:**

```
Input: text = "x &gt; y &amp;&amp; x &lt; y is always false"
Output: "x > y && x < y is always false"
```

**Example 5:**

```
Input: text = "leetcode.com&frasl;problemset&frasl;all"
Output: "leetcode.com/problemset/all"
```

**Constraints:**

* `1 <= text.length <= 10^5`
* The string may contain any possible characters out of all the 256 ASCII characters.

```java
class Solution {
    public String whichOne(String text,int index){
        if(index+3<text.length()){
            if(text.substring(index,index+4).compareTo("&gt;")==0 || text.substring(index,index+4).compareTo("&lt;")==0)
                return text.substring(index,index+4);
        }
        if(index+4<text.length()){
            if(text.substring(index,index+5).compareTo("&amp;")==0)
                return text.substring(index,index+5);
        }
        if(index+5<text.length()){
            if(text.substring(index,index+6).compareTo("&quot;")==0 || text.substring(index,index+6).compareTo("&apos;")==0)
                return text.substring(index,index+6);
        }
        if(index+6<text.length()){
            if(text.substring(index,index+7).compareTo("&frasl;")==0)
                return text.substring(index,index+7);
        }
        return "";
    }
    public String entityParser(String text) {
        StringBuilder ans=new StringBuilder();
        for(int i=0;i<text.length();i++){
            char c=text.charAt(i);
            if(c=='&'){
                String s=whichOne(text,i);
                if(s.compareTo("")==0)
                    ans.append(c);
                else{
                    i+=s.length()-1;
                    if(s.compareTo("&gt;")==0)
                        ans.append(">");
                    else if(s.compareTo("&lt;")==0)
                        ans.append("<");
                    else if(s.compareTo("&amp;")==0)
                        ans.append("&");
                    else if(s.compareTo("&quot;")==0)
                        ans.append("\"");
                    else if(s.compareTo("&apos;")==0)
                        ans.append("'");
                    else
                        ans.append("/");
                }
            }
            else{
                ans.append(c);
            }
        }
        return ans.toString();
    }
}
```
