L1-064 估值一亿的AI核心代码 (20分)(正则替换)

L1-064 估值一亿的AI核心代码 (20分)

原题链接:传送门

一、题目:

在这里插入图片描述



二、解析:

思路:

使用String对象中的replaceAll方法正则匹配替换。
这题做的时候多去百度一下正则,正则表达式匹配很强大!

注意:

需要注意的坑已经在代码中描述。

AC代码:
import java.util.Scanner;

/**
 * L1-064 估值一亿的AI核心代码 (20分)
 * 
 * @author: ChangSheng
 * @date: 2019年12月9日 下午7:19:18
 * @ref: 参考:https://blog.csdn.net/qq_43338951/article/details/89425156
 */
public class L1_064_估值一亿的AI核心代码 {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		int n = s.nextInt();
		s.nextLine();
		for (int i = 0; i < n; i++) {
			String line = s.nextLine();
			System.out.println(line);
			// 1.去除首尾空格、单词间多个空格替换成一个、前面有空格的标点符号替换成无空格的标点符号、问号替换成感叹号
			line = line.trim()
				.replaceAll(" +", " ")
				.replaceAll(" +(\\W)", "$1") // \\W代表符号
	        	.replaceAll("\\?","!");
			// 2.所有大写转小写,除了I
			String lowerstr = "";
			char[] arr = line.toCharArray();
			for (int j = 0; j < arr.length; j++) {
				if (arr[j] >= 'A' && arr[j] <= 'Z' && arr[j] != 'I') {
					arr[j] += 32;
				}
				lowerstr += arr[j];
			}
			// 3.替换(can you, could you, I, me)
			// 因为(can you, could you, I, me)直接替换会相互影响,所以不能同时替换,所以先将他们替换成别的东西
			// 将can you,could you替换成I can I could
			lowerstr = lowerstr.replaceAll("\\bcan you\\b", "A") // \\b只匹配单词边界,只是一个位置,不匹配任何字符。
					.replaceAll("\\bcould you\\b", "B")
					.replaceAll("\\b(I|me)\\b", "C");
			// 再替换回来
			lowerstr = lowerstr.replaceAll("A", "I can")
					.replaceAll("B", "I could")
					.replaceAll("C", "you");
            System.out.println("AI: "+lowerstr);
		}
	}
}


相关

PAT - 乙级 - 题解集

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值