解题思路:

规则简述
数字和字母规则相同。
1, d-e  => de; e-d =>e-d
如果右大于左一个,则去掉-号,否则不变。
2,
p1=1,填充小写
p1=2,填充大写
p1=3,数字和字母都填充“*”
3,
p2=k,填充k次
4,
p3=1,顺序填写,
p3=2,逆序填写


注意事项:

测试数据很刁钻。有连续两个"--",或者开头和结尾有'-'。

题目中并没有提示这些,但我仍然觉得它是一个关于java字符串方面的好题,同时对于程序鲁棒性也有一定的考验。

timg.jpg

timg.jpg

参考代码:

import java.util.Scanner;


public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int p1=sc.nextInt();
		int p2=sc.nextInt();//k
		int p3=sc.nextInt();
		String str=sc.next();
		for (int i = 0; i < str.length(); i++) {
			char item_=str.charAt(i);// '-'
			if (i==0 && item_=='-') {//意外情况
				System.out.print(item_);
				continue;
			}
			if (i==str.length()-1 && item_=='-') {//意外情况
				System.out.print(item_);
				continue;
			}
			if (item_=='-') {
				char item_left=str.charAt(i-1); //'-'左字符
				char item_right=str.charAt(i+1); //'-'右字符
				if (item_right==item_left+1) {
					continue;
				}
				if (item_right<=item_left || Character.isDigit(item_left)!=Character.isDigit(item_right) || Character.isUpperCase(item_left)!=Character.isUpperCase(item_right) || Character.isLowerCase(item_left)!=Character.isLowerCase(item_right)) { //当-前后类型不同时,也是原样输出。。。
					System.out.print(item_);
					continue;
				}
				int n=item_right-item_left-1;//需要循环字符个数
				if (p1==3) {
					for (int j = 0; j <n; j++) {
						for (int k = 0; k <p2; k++) {
							System.out.print('*');
						}
					}
				}else if (p1==2 || p1==1) {
					char temp=item_left;
					String tempStr="";
					for (int j = 0; j <n; j++) {
						temp++;
						for (int k = 0; k <p2; k++) {
							tempStr+=temp;
						}
					}
					if (p3==2) {//反序
						tempStr=new StringBuffer(tempStr).reverse().toString();
					}
					if (p1==2) {
						tempStr= tempStr.toString().toUpperCase();
					}else if (p1==1) {
						tempStr= tempStr.toString().toLowerCase();
					}
					System.out.print(tempStr);
				}
			}else {
				System.out.print(item_);
			}
		
			
		}
	}
}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论