Hi, some time ago I started learn Java language. I am trying to self-study and learn Java. And I have to say that the language is very nice, and with deep knowledge of C#, my progress is fast. I want to show you today here one of the nice code puzzle solutions named Tag Content Extractor. It takes me some time. I started learning Java from straightforward puzzles, and every next one became more and more complicated. Also, I am thinking about Java certification. However, it is not a must because I get the lesson that certification in .NET, even MCPD Enterprise Application Developer, does not return any career opportunity, so I think certification is not very important. But maybe some basic steps could be helpful. And I think every good Software Architect should know at least C# and Java. I know that one of those languages could be the main and second well-known only to understand software solutions better. Below you can find the solution to the mentioned puzzle. And if you are interested to learn Java with deep knowledge of C#, you can go to this very nice how-to . On the Hacker Rank I get so far from Java language trainings 248 points and 3199 rank :).
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int testCases = Integer.parseInt(in.nextLine()); Pattern pattern = Pattern.compile( "<([/a-zA-Z]+).*?>" ); while(testCases>0) { String line = in.nextLine(); Matcher matcher = pattern.matcher(line); List<String> tags = new ArrayList<String>(); while(matcher.find()) { String tag = matcher.group(0); tags.add(tag); } boolean none = true; while(tags.size() >= 2) { String tagB = tags.get(0); String tagE = tags.get(1); if (!tagB.replace("<", "</").equals(tagE)) { tags.remove(0); int x = line.indexOf(tagB); line = line.substring(x + tagB.length()); } else { tags.remove(0); tags.remove(0); int x = line.indexOf(tagB) + tagB.length(); int y = line.indexOf(tagE, x); String finding = line.substring(x,y); line = line.substring(y + tagE.length()); if (!finding.isEmpty()) { System.out.println(finding); none = false; } } } if (none) { System.out.println("None"); } testCases--; } } }
Thanks for reading and enjoy! It is still 50 lines, and there is probably a way to use regex matcher to find out texts quicker, but this is the best I can do right now with my level of Java knowledge!
p ;).