字符串的展开
问题描述
示例
输入1:
1 2 1
abcs-w1234-9s-4zz
输出1:
abcsttuuvvw1234556677889s-4zz
输入2:
2 3 2
a-d-d
输出2:
aCCCBBBd-d
输入3:
3 4 2
di-jkstra2-6
输出3:
dijkstra2************6
运行限制 : 最大运行时间:1s 最大运行内存: 128M
import java.util.Scanner;
public class Main {
static StringBuilder sb;
static int p1;
static int p2;
static int p3;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
p1 = sc.nextInt();
p2 = sc.nextInt();
p3 = sc.nextInt();sc.nextLine();
sb = new StringBuilder(sc.nextLine());
for (int i = 1; i < sb.length()-1; i++) {
if(sb.charAt(i) == '-') {
if(is(i))
exp(i);
}
}
System.out.println(sb);
}
private static void exp(int index) {
char a = sb.charAt(index-1);
char b = sb.charAt(index+1);
sb.deleteCharAt(index);
if(a < b-1){
StringBuilder s2 = new StringBuilder();
if(p1 == 3){
for (int i = 1; i <=(b-a-1)*p2; i++)s2.append('*');
}else if(b <= 57 || p1 == 1){
for (char i = (char)(a+1); i < b; i++) {
for (int j = 1; j <= p2; j++)
s2.append(i);
}
}else{
for (char i = (char)(a+1-32); i < b-32; i++) {
for (int j = 1; j <= p2; j++)
s2.append(i);
}
}
if(p3 == 2)s2.reverse();
sb.insert(index,s2);
s2.delete(0, s2.length()-1);
}
}
private static boolean is(int index) {
if(index == 0 || index == sb.length()-1)
return false;
char a = sb.charAt(index-1);
char b = sb.charAt(index+1);
if(a < b) {
if(48 <= a && a <= 57 && 48 <= b && b <= 57)return true;
if(97 <= a && a <= 122 && 97 <= b && b <= 122)return true;
}
return false;
}
}