在 TopCoder 解了一道练习题有感
昨天在 TopCoder 上解了一道练习题,水题一道。但是 TopCoder 的计分规则很有趣。前天晚上我因为好奇把 3 道题都打开了,然后就睡觉去了。昨天下午吃晚饭后我把一道 250 分的题目做了出来,发现只得了两位数的分。结果到网上查了才发现它的计分与时间有关系。
看来这个环境还是需要适应。
然后我看了一下满分的人的题解,发现他们运用了一些有趣的东西。
其中一个就是字符串的正则表达式匹配。String 类有一个成员函数 matches, 里面可以含一个参数,这个参数就是一个正则表达式。返回的结果是这个字符串是否能够被给出的正则表达式匹配。比如:
1 2 3 4 | String token = "hello."; if (token.matches("[A-Za-z]+\.?")) { /* ... */ } |
还有一个是 String 的分割,用的是 split 函数。这个函数可以接受一个参数,这个参数是一个正则表达式。给出这个参数后,所有在字符串中能够匹配这个正则表达式的片段都会被切断,然后分离出的各个子串组成一个字符串数组:
1 2 3 | String token = "hello this is a sentence."; String[] tokens = token.split(" "); /* tokens will be {"hello", "this", "is", "a", "sentence."} */ |
还有一个是 for 的运用。因为我是先会的 C++ 才学的 Java, 所以类似这种用法的就见得比较少:
1 2 3 4 5 6 7 | String token = "hello this is a sentence."; String[] tokens = token.split(" "); for (String s : tokens) { if (s.matches("[A-Za-z]+\.?")) { /* ... */ } } |
看起来 ACM 中使用 Java 能赚到不少啊,又有 BigDecimal, BigInteger 之类的,而且还有时间宽限。
原创文章,转载请注明来源:http://euyuil.com/2385/first-solution-in-topcoder/

JAVA的优化一下好像好爽…宽限很多时间的吧?
lkgs,,,加油!你是最棒的!!!能学到东西就好!