Cod sursa(job #1343254)

Utilizator raduneagoeNeagoe Radu raduneagoe Data 15 februarie 2015 02:04:13
Problema Convertor Scor 70
Compilator java Status done
Runda rosedu_cdl_2015 Marime 2.74 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.charAt(i) == ch)
                counter++;
        }
        return counter;
    }    

	private static int charAppears(StringBuilder s, char ch)
	{
		int counter = 0;
        for(int i = 0; i < s.length(); i++)
        {
            if(s.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);
 
            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);
        }
        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, '}'); //nr '}' = nr liniilor, fara prima linie
         
        for (int i = 0; i < m; i++)
        {
            writer.print(deleteChar(JSON.substring(a, b)) + ",");
             
            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)) + ",");
                } 
                catch (StringIndexOutOfBoundsException e)
                {
                    b = JSON.lastIndexOf("}");
                    writer.print(deleteChar(JSON.substring(a, b)) + ",");
                }
            }
        }
        writer.close();
    }
}