Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 3966 | Accepted: 1103 |
Description
Apologists of Java and C++ can argue for hours proving each other that their programming language is the best one. Java people will tell that their programs are clearer and less prone to errors, while C++ people will laugh at their inability to instantiate an array of generics or tell them that their programs are slow and have long source code.
Another
issue that Java and C++ people could never agree on is identifier
naming. In Java a multiword identifier is constructed in the following
manner: the first word is written starting from the small letter, and
the following ones are written starting from the capital letter, no
separators are used. All other letters are small. Examples of a Java
identifier are javaIdentifier
, longAndMnemonicIdentifier
, name
, nEERC
.
Unlike them, C++ people use only small letters in their identifiers. To separate words they use underscore character ‘_
’. Examples of C++ identifiers are c_identifier
, long_and_mnemonic_identifier
, name
(you see that when there is just one word Java and C++ people agree), n_e_e_r_c
.
You are writing a translator that is intended to translate C++ programs to Java and vice versa. Of course, identifiers in the translated program must be formatted due to its language rules — otherwise people will never like your translator.
The first thing you would like to write is an identifier translation routine. Given an identifier, it would detect whether it is Java identifier or C++ identifier and translate it to another dialect. If it is neither, then your routine should report an error. Translation must preserve the order of words and must only change the case of letters and/or add/remove underscores.
Input
The input file consists of one line that contains an identifier. It consists of letters of the English alphabet and underscores. Its length does not exceed 100.
Output
If
the input identifier is Java identifier, output its C++ version. If it
is C++ identifier, output its Java version. If it is none, output “Error!
Sample Input
sample input #1 long_and_mnemonic_identifier sample input #2 anotherExample sample input #3 i sample input #4 bad_Style
Sample Output
sample output #1 longAndMnemonicIdentifier sample output #2 another_example sample output #3 i sample output #4 Error!
需要注意的:
1)黑体字不是输入输出;
2)必须小写字母开头
3)不能有连续_
4)字符串最后不能是_
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); while(cin.hasNext()) { String str = cin.nextLine(); int type = checkType(str); if(type == -1) System.out.println("Error!"); else if(type == 1) { StringBuffer sb = new StringBuffer(); while(str.indexOf("_") != -1) { int index = str.indexOf("_"); sb.append(str.substring(0, index)); if(index != 0) { String tmp = str.substring(index+1); str = FUpper(tmp); }else str = str.substring(index+1); } sb.append(str); System.out.println(sb.toString()); } else if(type == 2) { StringBuffer sb = new StringBuffer(); for(int i = 0; i < str.length(); i++) { char c = str.charAt(i); if(c >= 97 && c <= 122) { sb.append(c); }else if(c >= 65 && c <= 90) { sb.append('_'); sb.append((char)(c+32)); } } System.out.println(sb.toString()); } } } private static String FUpper(String str) { StringBuffer sb = new StringBuffer(); sb.append((char)(str.charAt(0) - 32)); if(str.length() > 1) sb.append(str.substring(1)); return sb.toString(); } private static int checkType(String str) { if(str.endsWith("_")) return -1; if(str.startsWith("_")) return -1; if(str.indexOf("_") != -1) { for(int i = 0; i < str.length(); i++) { if((str.charAt(i) + 0) >= 65 && (str.charAt(i) + 0) <= 90) return -1; if(str.charAt(i) == '_' && i != 0 && i != str.length()-1) if(str.charAt(i-1) == '_' || str.charAt(i+1) == '_') return -1; } return 1; } if(str.charAt(0) >= 65 && str.charAt(0) <= 90) return -1; return 2; } }
发表评论
-
POJ ACM习题【No.2328】
2009-07-05 19:43 894Guessing Game Time ... -
POJ ACM习题【No.2924】
2009-04-26 11:52 916Gauß in Elementary School ... -
POJ ACM习题【No.3176】
2009-04-26 10:53 1040Cow Bowling Time Lim ... -
POJ ACM习题【No.3173】
2009-04-25 23:30 897Parkside's Triangle ... -
POJ ACM习题【No.2845】
2009-04-25 22:25 120601000001 Time Limit: ... -
POJ ACM习题【No.2140】
2009-04-25 21:26 930Herd Sums Time Limit ... -
POJ ACM习题【No.1969】
2009-04-25 20:59 854Count on Canton Time ... -
POJ ACM习题【No.2840】
2009-04-25 19:24 999Big Clock Time Limit ... -
POJ ACM习题【No.2521】
2009-04-24 22:41 842How much did the businessman l ... -
POJ ACM习题【No.1326】
2009-04-24 22:14 1002Mileage Bank Time Li ... -
POJ ACM习题【No.3325】
2009-04-24 21:15 1082ICPC Score Totalizer Software ... -
POJ ACM习题【No.2756】
2009-04-24 20:28 767Autumn is a Genius T ... -
POJ ACM习题【No.3062】
2009-04-24 20:10 801Celebrity jeopardy ... -
POJ ACM习题【No.1547】
2009-04-23 20:03 765Clay Bully Time Limi ... -
POJ ACM习题【No.1552】
2009-04-23 19:39 743Doubles Time Limit: ... -
POJ ACM习题【No.1007】
2009-04-23 19:24 844DNA Sorting Time Lim ... -
POJ ACM习题【No.1565】
2009-04-22 22:40 836Skew Binary Time Lim ... -
POJ ACM习题【No.2403】
2009-04-22 22:18 854Hay Points Time Limi ... -
POJ ACM习题【No.1862】
2009-04-22 20:12 693Stripies Time Limit: ... -
POJ ACM习题【No.3224】
2009-04-22 19:57 736Lab杯 Time Limit: 1 ...
相关推荐
方便大家有针对性地联系 祝大家AC愉快~
pojACM题目分类,便于各类型同学分别做题有所参考
相信大家在做poj上的题目的时候如果没有分类的话很迷茫吧....这里有一份目前比较全面的poj题目分类..
02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ题库使用指南.docx02.北大POJ...
acm数据结构总结.doc acm数据结构总结.doc
poj acm题解,包括绝大部分poj题目的题解,可以供acm爱好者学习研究
本文件是ACM里的一些题目的源码、原题和习题的分析及详细解答。欢迎各位下载
http://acm.pku.edu.cn/JudgeOnline/ acm的AC解题报告
POJ ACM 1015 Jury Compromise 两种解法 解题报告
西工大C语言POJ习题答案.docx
PKU 、POJ ACM/ICPC300多题的代码,还有各种典型问题的分类代码
poj 2007 Scrambled Polygon.md
poj 3183 Stump Removal.md
poj 2430 Lazy Cows.md
poj 1984 Navigation Nightmare.md
poj 2900 Griddy Hobby.md
poj 3435 Sudoku Checker.md
poj 2668 Defending Castle.md
poj 2174 Decoding Task.md
poj 2417 Discrete Logging.md