陈正磊


私信TA

用户名:RossTran

访问量:13625

签 名:

晨兴理荒秽,带月荷锄归。

等  级
排  名 178
经  验 6677
参赛次数 15
文章发表 34
年  龄 0
在职情况 学生
学  校 湖北生物科技职业学院
专  业

  自我简介:

解题思路:

规则简述
数字和字母规则相同。
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分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区