[洛谷每日一题]P1308 [NOIP2011 普及组] 统计单词数

这道题实现的目的就像是word里的查找功能,上题:

 第一次提交时,我用了自己写的对比两字符串的函数:

	static boolean check(String s, String s1) {
		int i = 0;
		for(i = 0; i < s.length(); i ++) {
			if(s.charAt(i) != s1.charAt(i) && s.charAt(i) != s1.charAt(i)-32 && s.charAt(i) != s1.charAt(i)+32) 
				return false;
		}
		if(s1.charAt(i) != ' ')return false;
		return true;
	}

 但是MLE了....

MLE后我以为是String s2太大了所以超纲,最后想想不是的,一维数组可以开很大很大,并且题目也限定了“文章”字数范围,所以超纲原因只能是我的对比函数上出了问题;于是使用Java String类的方法过了;

AC撒花

 但这道题留下了一个疑问:Java语言该怎么边读边处理英文文章呢?因为读到末尾并不能让机器直到已经到底了;

另外,这是用到的一些Java字符处理函数 ,复习一下:

1、str.charAt(i);

2、str.substring(i1,i2)     //所截取的字符串包头不包尾

下面是我的AC代码:

package p1308;
import java.util.*;
public class Main {

	public static void main(String[] args) {
		//录入数据
		Scanner in = new Scanner(System.in);
		String s1 = in.nextLine().toLowerCase();
		String s2 = in.nextLine().toLowerCase();
		int count = 0;
		int first = 0;
		//处理数据
		for(int i = 0; i <= s2.length()-s1.length(); i ++) {//从文章的第一个位置开始检查
			if(i == 0 || s2.charAt(i-1)==' ')
				if(s1.equals(s2.substring(i, i+s1.length())) && s2.charAt(i+s1.length()) == ' ') {//如果相同
					if(count == 0)first = i;
					count ++;
				}
		}
		if(count != 0) {
			System.out.print(count+" ");
			System.out.print(first);
		}else
			System.out.print(-1);
	}

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值