题目要求

P1098题目链接

分析

这题最令我崩溃的是各种特殊情况,特别是结尾部分的处理。

p1、p2、p3 的操作要处理好,但真正恶心的就是如何判断是可以处理的。

  • 数值和字母不能补全
  • 两边相同的数字or字母不能补全
  • 左边大于右边不能补全
  • 连续-号无效
  • ……

获取的测试数据

(由于题做完很久,所以不记得Debug的过程了,抱歉,只能分享一些测试数据啦)
测试数据2
in

1 1 1
abcde

out

abcde

测试数据4
in

2 2 2
9-a-a

out

9-a-a

测试数据5
in

1 5 1
-254-243-52-345-243-5234-52-345-234-52-345-234-52345-4325-2345-2345-2345

out

-254-2434444452345-24344444523452345-23452345-23452345-4325-2345-2345-2345

测试数据6
in

1 1 1
2-43-sdf-ewr0-j-9re-j0g-9e0-9as-d09jf-9asdjf0q-w-ejr0q-59jdsnf-9z-x9v0-sd9fn--q

out

2343-sdf-ewr0-j-9refghij0g-9e0123456789as-d09jf-9asdjf0qrstuvw-ejr0q-59jdsnf-9z-x9v0-sd9fn--q

AC代码(Java语言描述)

import java.util.Scanner;public class Main {private static boolean isTypeEqual(char var1, char var2) {return (var1 < var2) && ((Character.isDigit(var1) && Character.isDigit(var2)) ||(Character.isLowerCase(var1) && Character.isLowerCase(var2)));}private static void generateAppendString(char from, char to, StringBuilder result, int times,boolean isStar, boolean isUpper, boolean isReversed) {if (isReversed) {for (char i = (char)(to-1); i > from; i--) {char add = isStar ? '*' : (Character.isDigit(i) ? i : ((isUpper ? (char)(i-32) : i)));for (int j = 0; j < times; j++) {result.append(add);}}} else {for (char i = (char)(from+1); i < to; i++) {char add = isStar ? '*' : (Character.isDigit(i) ? i : ((isUpper ? (char)(i-32) : i)));for (int j = 0; j < times; j++) {result.append(add);}}}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int p1 = scanner.nextInt(), p2 = scanner.nextInt(), p3 = scanner.nextInt();boolean isStar = p1 == 3;boolean isUpper = p1 == 2;boolean isReversed = p3 == 2;String line = scanner.next();scanner.close();StringBuilder result = new StringBuilder();char[] chars = line.toCharArray();for (int i = 0; i < line.length()-2; i++) {result.append(chars[i]);if (chars[i+1] == '-') {if (isTypeEqual(chars[i], chars[i+2])) {generateAppendString(chars[i], chars[i+2], result, p2, isStar, isUpper, isReversed);++i;} else {result.append(chars[++i]);}}}if (chars[line.length()-2] != '-' || chars[line.length()-3] == '-') {result.append(chars[line.length()-2]);}result.append(chars[line.length()-1]);System.out.println(result);}
}

字符串的展开(洛谷P1098题题解,Java语言描述)相关推荐

  1. 信息学奥赛一本通 1848:【07NOIP提高组】字符串的展开 | OpenJudge NOI 1.7 35:字符串的展开 | 洛谷 P1098 [NOIP2007 提高组] 字符串的展开

    [题目链接] ybt 1848:[07NOIP提高组]字符串的展开 OpenJudge NOI 1.7 35:字符串的展开 洛谷 P1098 [NOIP2007 提高组] 字符串的展开 [题目考点] ...

  2. 线性存储的最短平均检索时间(洛谷P1253题题解,Java语言描述)

    题目要求 P1253题目链接 分析 很像 ~洛谷P1223题题解~,也是一种类似SJF的贪心法. 排个序,由于两个不大于10000的数,乘起来还是int,就使用int属性吧. 数据量小,所以Scann ...

  3. 队列模拟约瑟夫问题(洛谷P1996题题解,Java语言描述)

    题目要求 P1996题目链接 分析 以前就研究过"约瑟夫环"问题: <单循环链表求解约瑟夫环问题(Java语言描述)> <杀人游戏~约瑟夫环(洛谷P1145题题解 ...

  4. [SpecialJudge]构造“神秘“字符串(洛谷P3742题题解,Java语言描述)

    题目要求 P3742题目链接 分析 这题挺有意思,是SpecialJudge,因为可能有多个答案,判题的时候出现一个就OK--测试用例貌似是足足有50个之多呢-- 要求是,找一个y使f(x,y)=z, ...

  5. 枚举求解单词方阵(洛谷P1101题题解,Java语言描述)

    题目要求 P1101题目链接 分析 可以用DFS做,但我立下了个Flag,所以就用了朴素的枚举来做.... 结果,我的天哪,做了好几个小时-- 其实这种地图题,真的适合 DFS or BFS or D ...

  6. 快速幂||取余运算【模板】(洛谷P1226题题解,Java语言描述)

    题目要求 P1226题目链接 分析 标准的快速幂取模算法板子,之前这个算法我在这篇文章中讲过了:<快速幂算法详解&&快速幂取模算法详解>. 这里选择使用比较简单的API实现 ...

  7. 贪心策略摘果子(洛谷P1478题题解,Java语言描述)

    题目要求 P1478题目链接 分析 本题的低配版题目链接 → 题解 那个题就是纯水题没啥可写的,我除了贴代码无话可说,但这题吧,虽然不算难,但也可一说. 建议大家移步这里 → 精辟题解 这位爷写了本题 ...

  8. N进制正反累加判回文数(洛谷P1015题题解,Java语言描述)

    题目要求 P1015题目链接 分析 开始的时候写了这么一个代码,应该是比较基础的,是十进制的. private static void low() {Scanner scanner = new Sca ...

  9. 麦森数(洛谷P1045题题解,Java语言描述)

    题目要求 题目链接 分析 这题挺经典的,快速幂取模算法,如果求出大数再取模就可能T掉. 之前有篇文章写了这个算法:<快速幂算法详解&&快速幂取模算法详解> 既然是Java, ...

最新文章

  1. Doolittle算法C语言实现
  2. IBM蓝色基因/Q将采用NAND闪存存储
  3. 滴滴CTO张博:我人生重要的四次选择
  4. 执行cmd并获得结果_MySQL 服务无法启动 请键入 NET HELPMSG 3523 以获得更多的帮助...
  5. 【ASP.NET】免费的WebConfig编辑工具
  6. linux查看是否有用户在使用分区,在Linux服务器中有几种查看分区表的方法
  7. ClipDrawable
  8. 1036 跟奥巴马一起编程
  9. WIN10系统开机一个WIFI都找不到,网络适配器里没有WLAN驱动,连接不了网络问题【耗时3天测试10多种方法】
  10. linux驱动开发篇Linaro(arm交叉编译器的下载与安装)
  11. mysql Operator 学习
  12. 一位非米粉关于小米的深度报告
  13. 线程学习基础(1):单线程爬虫和多线程爬虫的效率比照
  14. 程序员提供9个最好的论坛
  15. 昆明理工大学计算机组成原理考试,昆工计科组成原理实验の计算机组成原理各部件实验.doc...
  16. 【教学案例】Baxter应用于工程专业新生教学的实践赏析
  17. Revit 2016 笔记01------------2021-10-15
  18. PTA 悄悄关注 (25 分)
  19. Sci-Hub最新网址
  20. base64图片解析

热门文章

  1. [转]Angular2 使用管道Pipe以及自定义管道格式数据
  2. Unable to load native-hadoop library解决思路
  3. 结婚虽易,终老不易:EntityFramework和AutoMapper的婚后生活
  4. python 函数的参数对应
  5. 纯真IP数据库格式详解
  6. 蓝桥杯第八届省赛JAVA真题----包子凑数
  7. 树--树的基本性质(JAVA)
  8. Extra Data after Last Expected Column:hawq建外表load数据报错
  9. Python的元组被设计成不可变的影响
  10. Linux的开源免费办公软件,开源免费Office办公套件(LibreOffice)