1 / 3
Nov 2016

I tried few test cases and its correct but don't know why it does'nt pass on spoj
/*
abcd_123
abcd123
_vick
Error!
jaVa
ja_va
ne__cd
Error!

*/

import java.io.*;

public class Main{
public static void main(String[] args)throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

   String k=br.readLine();
   int l=k.length();
   int i=0;

 String ans="";
 if(k.equals(""))
 {ans="Error!"; }

 else { if(k.indexOf("_")!=-1)
   {
       //do c++ -> java 

       if(k.charAt(0)=='_' || k.charAt(l-1)=='_')
       {
         ans="Error!";  
       }
        else
       { for(i=0;i<k.length();i++)
         {
           if(k.charAt(i)>=65 && k.charAt(i)<=90)
           {//then its not a pure c++
               ans="Error!";
               break;
           }
           else//it is c++
           {
            if(k.charAt(i)=='_')   
            {if(k.charAt(i+1)>=97 && k.charAt(i+1)<=122 )
            {
               {ans=ans+(char)(k.charAt(i+1)-32);i++;} 
            }
            else if(Character.isUpperCase(k.charAt(i+1)) || k.charAt(i+1)=='_')
             {//then its not a pure c++
            ans="Error!";
            break;
            }

            }

            else
            ans=ans+k.charAt(i);

           }
       }
       }

   }
   else {
       //do java ->c++
       if(k.charAt(0)>=65 && k.charAt(0)<=90)
             ans="Error!";
       else
       {for(i=0;i<k.length();i++)
       {
           if(k.charAt(i)=='_')
           {//then its not a pure java
               ans="Error!";
               break;
           }
           else//it is java
           {
               if(k.charAt(i)>=65 && k.charAt(i)<=90)
               {ans=ans+"_"+(char)(k.charAt(i)+32);}
               else
                   ans=ans+k.charAt(i);
           }
       }}


   }
 }
   System.out.println(ans);

}

}

  • created

    Nov '16
  • last reply

    Oct '17
  • 2

    replies

  • 1.2k

    views

  • 3

    users

  • 1

    link

11 months later