Submission #3634277


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
using Int = long long;
template<typename T1,typename T2> inline void chmin(T1 &a,T2 b){if(a>b) a=b;}
template<typename T1,typename T2> inline void chmax(T1 &a,T2 b){if(a<b) a=b;}

//INSERT ABOVE HERE
Int isCamel(string s);
Int is_under(string s);
string toUnder(string s);
string to_camel(string s);


Int isCamel(string s){
  while(s.front()=='_') s.erase(s.begin());
  while(s.back()=='_') s.pop_back();
  return count(s.begin(),s.end(),'_')==0;  
}

string toUnder(string s){
  assert(isCamel(s));
  string t;
  for(char c:s){
    if(isupper(c)) t+='_';
    t+=tolower(c);
  }
  return t;
}

Int is_under(string s){  
  while(s.front()=='_') s.erase(s.begin());
  while(s.back()=='_') s.pop_back();

  for(Int i=0;i<26;i++)
    if(count(s.begin(),s.end(),char('A'+i))) return 0;

  for(Int i=0;i+1<(Int)s.size();i++)
    if(s[i]=='_'&&!islower(s[i+1])) return 0;
  
  return 1;
}

string to_camel(string s){
  Int a=0,b=0;
  while(s.front()=='_') s.erase(s.begin()),a++;
  while(s.back()=='_') s.pop_back(),b++;

  string t;
  for(Int i=0;i<(Int)s.size();i++){
    if(s[i]=='_') t+=toupper(s[++i]);
    else t+=s[i];
  }
  
  return string(a,'_')+t+string(b,'_');
}


signed main(){
  string s;
  cin>>s;
  Int n=s.size();
  if(s==string(n,'_')){
    cout<<s<<endl;
    return 0;
  }
  
  string t=s;
  while(t.front()=='_') t.erase(t.begin());
  if(!islower(t[0])){
    cout<<s<<endl;
    return 0;
  }
  
  if(isCamel(s)){
    cout<<toUnder(s)<<endl;
    return 0;
  }
  if(is_under(s)){
    cout<<to_camel(s)<<endl;
    return 0;
  }
  cout<<s<<endl;
  return 0;
}

Submission Info

Submission Time
Task B - camel_case
User beet
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1700 Byte
Status AC
Exec Time 1 ms
Memory 256 KB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 65
Set Name Test Cases
All 00_sample01, 00_sample02, 00_sample03, 00_sample04, 00_sample05, 01_manual01, 01_manual02, 01_manual03, 01_manual04, 01_manual05, 01_manual06, 01_manual07, 01_manual08, 01_manual09, 01_manual10, 10_input00, 10_input01, 10_input02, 10_input03, 10_input04, 10_input05, 10_input06, 10_input07, 10_input08, 10_input09, 10_input10, 10_input11, 10_input12, 10_input13, 10_input14, 10_input15, 10_input16, 10_input17, 10_input18, 10_input19, 10_input20, 10_input21, 10_input22, 10_input23, 10_input24, 10_input25, 10_input26, 10_input27, 10_input28, 10_input29, 10_input30, 10_input31, 10_input32, 10_input33, 10_input34, 10_input35, 10_input36, 10_input37, 10_input38, 10_input39, 10_input40, 10_input41, 10_input42, 10_input43, 10_input44, 10_input45, 10_input46, 10_input47, 10_input48, 10_input49
Case Name Status Exec Time Memory
00_sample01 AC 1 ms 256 KB
00_sample02 AC 1 ms 256 KB
00_sample03 AC 1 ms 256 KB
00_sample04 AC 1 ms 256 KB
00_sample05 AC 1 ms 256 KB
01_manual01 AC 1 ms 256 KB
01_manual02 AC 1 ms 256 KB
01_manual03 AC 1 ms 256 KB
01_manual04 AC 1 ms 256 KB
01_manual05 AC 1 ms 256 KB
01_manual06 AC 1 ms 256 KB
01_manual07 AC 1 ms 256 KB
01_manual08 AC 1 ms 256 KB
01_manual09 AC 1 ms 256 KB
01_manual10 AC 1 ms 256 KB
10_input00 AC 1 ms 256 KB
10_input01 AC 1 ms 256 KB
10_input02 AC 1 ms 256 KB
10_input03 AC 1 ms 256 KB
10_input04 AC 1 ms 256 KB
10_input05 AC 1 ms 256 KB
10_input06 AC 1 ms 256 KB
10_input07 AC 1 ms 256 KB
10_input08 AC 1 ms 256 KB
10_input09 AC 1 ms 256 KB
10_input10 AC 1 ms 256 KB
10_input11 AC 1 ms 256 KB
10_input12 AC 1 ms 256 KB
10_input13 AC 1 ms 256 KB
10_input14 AC 1 ms 256 KB
10_input15 AC 1 ms 256 KB
10_input16 AC 1 ms 256 KB
10_input17 AC 1 ms 256 KB
10_input18 AC 1 ms 256 KB
10_input19 AC 1 ms 256 KB
10_input20 AC 1 ms 256 KB
10_input21 AC 1 ms 256 KB
10_input22 AC 1 ms 256 KB
10_input23 AC 1 ms 256 KB
10_input24 AC 1 ms 256 KB
10_input25 AC 1 ms 256 KB
10_input26 AC 1 ms 256 KB
10_input27 AC 1 ms 256 KB
10_input28 AC 1 ms 256 KB
10_input29 AC 1 ms 256 KB
10_input30 AC 1 ms 256 KB
10_input31 AC 1 ms 256 KB
10_input32 AC 1 ms 256 KB
10_input33 AC 1 ms 256 KB
10_input34 AC 1 ms 256 KB
10_input35 AC 1 ms 256 KB
10_input36 AC 1 ms 256 KB
10_input37 AC 1 ms 256 KB
10_input38 AC 1 ms 256 KB
10_input39 AC 1 ms 256 KB
10_input40 AC 1 ms 256 KB
10_input41 AC 1 ms 256 KB
10_input42 AC 1 ms 256 KB
10_input43 AC 1 ms 256 KB
10_input44 AC 1 ms 256 KB
10_input45 AC 1 ms 256 KB
10_input46 AC 1 ms 256 KB
10_input47 AC 1 ms 256 KB
10_input48 AC 1 ms 256 KB
10_input49 AC 1 ms 256 KB