Cod sursa(job #1343252)

Utilizator raduneagoeNeagoe Radu raduneagoe Data 15 februarie 2015 01:57:33
Problema Convertor Scor 30
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.57 kb
import java.io.*;
import java.util.Scanner;
 
public class Main
{
    public static int charAppears(String s, char ch)
    {
        int counter = 0;
        for(int i = 0; i < s.length(); i++)
        {
            if(s.intern().charAt(i) == ch)
                counter++;
        }
        return counter;
    }
     
    public static String deleteChar(String s)
    {   
        while(s.charAt(0) == ' ' || s.charAt(0) == '"' || s.charAt(s.length() - 1) == ' ' || s.charAt(s.length() - 1) == '"' || s.charAt(s.length() - 1) == '}' || s.charAt(s.length() - 1) == ',')
        {
            if(s.charAt(0) == ' ' || s.charAt(0) == '"')
                s = s.substring(1).intern();
 
            if(s.charAt(s.length() - 1) == ' ' || s.charAt(s.length() - 1) == '"' || s.charAt(s.length() - 1) == '}' || s.charAt(s.length() - 1) == ',')
                s = s.substring(0,s.length() - 1).intern();
        }
        return s;
    }
     
    public static void main(String[] args) throws IOException
    {
        StringBuilder JSON = new StringBuilder(new Scanner(new FileInputStream("convertor.in")).useDelimiter("\\Z").next().replaceAll("(\\r|\\n)", ""));
        PrintWriter writer = new PrintWriter("convertor.out");
         
        // prima linie
        int a = JSON.indexOf("\"") + 1, b = JSON.indexOf(":") - 1;
        int m = charAppears(JSON.substring(JSON.indexOf(":"), JSON.indexOf("}")).intern(), ',') + 1; //nr virgulelor = nr coloanelor
        int n = charAppears(JSON.toString().intern(), '}'); //nr '}' = nr liniilor, fara prima linie
         
        for (int i = 0; i < m; i++)
        {
            writer.print(deleteChar(JSON.substring(a, b)).intern() + ",");
             
            a = JSON.indexOf(",", a) + 1;
            b = JSON.indexOf(":", b + 2) - 1;
        }
         
        //urmatoarele linii
        a = b = 0;
        for(int i = 0; i < n; i++)
        {
            writer.println();
             
            for(int j = 0; j < m; j++)
            {
                a = JSON.indexOf(":", a) + 1;
                b = JSON.indexOf(",", b) + 1;
                try //pe ultima linie nu voi mai avea "}," si va da eroare
                {
                    writer.print(deleteChar(JSON.substring(a, b)).intern() + ",");
                } 
                catch (StringIndexOutOfBoundsException e)
                {
                    b = JSON.lastIndexOf("}");
                    writer.print(deleteChar(JSON.substring(a, b)).intern() + ",");
                }
            }
        }
        writer.close();
    }
}