普及练习场 交叉模拟 字符串的展开
2017-12-13 01:24
375 查看
题目链接
欢迎加入“不会算法一群菜鸟”,群号是⑥⑥①⑨②2025,这是我设置的一道很低的门槛用来阻止广告的。入群的验证暗号是:我爱编译原理
题意理解
这题很显然,就直接模拟就好了。我觉得吧,我对Java的API还不够熟悉,如果是”-a-“.split(“-“),返回结果居然是一个含有两个元素的String数组。我建议自己可以用cpp重写一下。。代码
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int p1 = scanner.nextInt(); int p2 = scanner.nextInt(); int p3 = scanner.nextInt(); String input = scanner.next(); scanner.close(); String[] strings = input.split("-"); for(int i = 0; i < strings.length - 1; i++) { if("".equals(strings[i])) { System.out.print("-"); continue; } if("".equals(strings[i+1])) { System.out.print(strings[i] + "-"); continue; } System.out.print(strings[i]); char firstEnd = strings[i].charAt(strings[i].length() - 1); char secondFirst = strings[i + 1].charAt(0); if(isSameType(firstEnd, secondFirst) && firstEnd < secondFirst) { System.out.print(output(p1, p2, p3, firstEnd, secondFirst)); } else { System.out.print("-"); } } System.out.print(strings[strings.length - 1]); if(input.endsWith("-")) { System.out.print("-"); } } private static boolean isDigit(char c) { return '0' <= c && c <= '9'; } private static boolean isChar(char c) { return 'a' <= c && c <= 'z'; } private static boolean isSameType(char a, char b) { return (isChar(a) && isChar(b)) || (isDigit(a) && isDigit(b)); } // p1 = 1, 小写;p1 = 2,大写;p1 = 3,* // p2 是填充次数 // p3 = 1,原来顺序;p3 = 2,逆序 private static String output(int p1, int p2, int p3, char left, char right) { StringBuilder sb = new StringBuilder(); for(int i = left + 1; i < right; i++) { for(int j = 0; j < p2; j++) { sb.append((char)(i)); } } if(p3 == 2) { sb = sb.reverse(); } if(p1 == 1) { return sb.toString(); } else if(p1 == 2) { return sb.toString().toUpperCase(); } else if(p1 == 3) { int len = sb.length(); sb = new StringBuilder(); for(int i = 0; i < len; i++) { sb.append("*"); } return sb.toString(); } return ""; } }
欢迎加入“不会算法一群菜鸟”,群号是⑥⑥①⑨②2025,这是我设置的一道很低的门槛用来阻止广告的。入群的验证暗号是:我爱编译原理
相关文章推荐
- 普及练习场 交叉模拟 税收与补贴问题
- 普及练习场之交叉模拟
- 普及练习场 交叉模拟 乒乓球
- 普及练习场 交叉模拟 花生采摘
- 普及练习场 交叉模拟 均分纸牌
- noip1996 字符串编辑 - 普及组 (模拟,字符串处理)
- 普及练习场 简单的模拟 进制转换
- noip2007 字符串展开 (模拟)
- 展开字符串 字符模拟
- ACM 48. [NOIP2007] 字符串的展开(水模拟)
- 普及练习场 简单的模拟 机器翻译
- 2013武科大蓝桥杯校内选拔赛 G题 展开字符串(模拟)
- 普及练习场 简单的模拟 多项式输出
- [luoguP1098] 字符串的展开(模拟)
- 普及练习场 字符串处理 潜伏者
- 普及练习场 简单的模拟 排座椅
- Codeforces 230C Shifts(模拟+展开字符串)
- 字符串的展开(普及--提高)
- 【模拟】洛谷 P1098 字符串的展开
- 普及练习场 简单的模拟 铺地毯