58 lines
1.4 KiB
Java
58 lines
1.4 KiB
Java
public class TreeDatastructures {
|
|
|
|
public static void main(String[] args) {
|
|
String initialNested = """
|
|
Rosetta Code
|
|
....rocks
|
|
........code
|
|
........comparison
|
|
........wiki
|
|
....mocks
|
|
........trolling
|
|
""";
|
|
|
|
System.out.println(initialNested);
|
|
|
|
String indented = nestedToIndented(initialNested);
|
|
System.out.println(indented);
|
|
|
|
String finalNested = indentedToNested(indented);
|
|
System.out.println(finalNested);
|
|
|
|
final boolean equal = ( initialNested.compareTo(finalNested) == 0 );
|
|
System.out.println("initialNested = finalNested ? " + equal);
|
|
}
|
|
|
|
private static String nestedToIndented(String nested) {
|
|
StringBuilder result = new StringBuilder();
|
|
|
|
for ( String line : nested.split(LINE_END) ) {
|
|
int index = 0;
|
|
while ( line.charAt(index) == '.' ) {
|
|
index += 1;
|
|
}
|
|
result.append(String.valueOf(index / 4) + " " + line.substring(index) + LINE_END);
|
|
}
|
|
|
|
return result.toString();
|
|
}
|
|
|
|
private static String indentedToNested(String indented) {
|
|
StringBuilder result = new StringBuilder();
|
|
|
|
for ( String line : indented.split(LINE_END) ) {
|
|
final int index = line.indexOf(' ');
|
|
final int level = Integer.valueOf(line.substring(0, index));
|
|
for ( int i = 0; i < level; i++ ) {
|
|
result.append("....");
|
|
}
|
|
result.append(line.substring(index + 1) + LINE_END);
|
|
}
|
|
|
|
return result.toString();
|
|
}
|
|
|
|
private static final String LINE_END = "\n";
|
|
|
|
}
|