天下一プログラマコンテスト2012 予選B B - camel_case
やるだけ。だが、面倒くさい。こういう問題を、正規表現とかを使って、すっきり解けるようになりたい。
import re c = raw_input() if c=="_"*len(c): print c exit(0) pre,suf = 0,0 while c[pre]=="_": pre+=1 while c[-suf-1]=="_": suf+=1 c = c[pre:] if suf>0: c = c[:-suf] #print pre,c,suf def cam(c): if not c[0].islower(): return "" if "_" in c: return "" W = [] p = 0 s = 0 while p<len(c): if c[p].isupper(): W += [c[s:p]] s = p p+=1 W += [c[s:]] for i in range(len(W)): W[i] = W[i][0].lower()+W[i][1:] return "_".join(W) def und(c): if "__" in c: return "" W = c.split("_") for w in W: if not w[0].islower(): return "" for x in w: if x.isupper(): return "" for i in range(1,len(W)): W[i] = W[i][0].upper()+W[i][1:] return "".join(W) t = cam(c) if t!="": print "_"*pre+t+"_"*suf else: t = und(c) if t!="": print "_"*pre+t+"_"*suf else: print "_"*pre+c+"_"*suf