fork(3) download
  1. import java.io.ByteArrayInputStream;
  2. import java.util.*;
  3.  
  4. import javax.xml.parsers.SAXParser;
  5. import javax.xml.parsers.SAXParserFactory;
  6.  
  7. import org.xml.sax.Attributes;
  8. import org.xml.sax.SAXException;
  9. import org.xml.sax.helpers.DefaultHandler;
  10.  
  11. class B {
  12. public static void main(String[] args) throws Exception{
  13. StringBuilder str = new StringBuilder();
  14. for(Scanner s = new Scanner(System.in);s.hasNext();){
  15. str.append(s.next());
  16. }
  17. SAXParserFactory spf = SAXParserFactory.newInstance();
  18. SAXParser parser = spf.newSAXParser();
  19. Handler hd = new Handler();
  20. parser.parse(new ByteArrayInputStream(str.toString().replaceAll("\\s", "").getBytes()), hd);
  21. Collections.sort(hd.result);
  22. System.out.println(hd.result.toString().replaceAll("[\\[\\],]", ""));
  23. }
  24.  
  25. static class Handler extends DefaultHandler {
  26. List<Integer> result = new ArrayList<Integer>();
  27. ArrayDeque<Integer> q = new ArrayDeque<Integer>();
  28. @Override
  29. public void startElement(String uri, String localName, String qName,
  30. Attributes attributes) throws SAXException {
  31. if(qName.equals("table")){
  32. q.push(0);
  33. }else if(qName.endsWith("td")){
  34. q.push(q.poll()+1);
  35. }
  36. }
  37. @Override
  38. public void endElement(String uri, String localName, String qName)
  39. throws SAXException {
  40. if(qName.equals("table")){
  41. result.add(q.poll());
  42. }
  43. }
  44. }
  45. }
  46.  
Success #stdin #stdout 0.1s 213312KB
stdin
<table><tr><td></td></tr></table>
stdout
1