1 / 2
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

    Nov '16
  • 1

    reply

  • 1.0k

    views

  • 2

    users

  • 1

    link

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);
    }
}

As I tested your code, it only returned the very first test case. Do you expect the input to be just one line?