试题编号: |
201409-3 |
试题名称: |
字符串匹配 |
时间限制: |
1.0s |
内存限制: |
256.0MB |
问题描述: |
问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。 输入格式 输入的第一行包含一个字符串S,由大小写英文字母组成。 第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。 第三行包含一个整数n,表示给出的文字的行数。 接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。 输出格式 输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串S的行。 样例输入 Hello 1 5 HelloWorld HiHiHelloHiHi GrepIsAGreatTool HELLO HELLOisNOTHello 样例输出 HelloWorld HiHiHelloHiHi HELLOisNOTHello 样例说明 在上面的样例中,第四个字符串虽然也是Hello,但是大小写不正确。如果将输入的第二行改为0,则第四个字符串应该输出。 评测用例规模与约定 1<=n<=100,每个字符串的长度不超过100。 |
==========================================================
解法:
package CSP3; import java.util.Scanner; public class Main3 { public static void main(String[] args) { new Main3().run(); } public void run(){ Scanner sc=new Scanner(System.in); String str=sc.next(); int flag=sc.nextInt(); int n=sc.nextInt(); String[] s=new String[n]; for(int i=0;i<n;i++){ s[i]=sc.next(); //此处用nextline(),只能输入4行 } if(flag==1){ for(int i=0;i<n;i++){ if(s[i].indexOf(str)>=0){ //indexof表示是否包含子字符串,包括返回值>=0 System.out.println(s[i]); } } } else{ for(int i=0;i<n;i++){ if(s[i].toUpperCase().indexOf(str.toUpperCase())>=0) System.out.println(s[i]); } } } }
==========================================================
知识补充:
Scanner中next()和nextLine()的区别
当使用nextLine()方法时会读取改行剩余的所有的内容,包括换行符,然后把焦点移动到下一行的开头。所以这样就无法接收到下一行输入的String类型的变量。
next()方法是以换行或者空格符为分界线接收下一个String类型变量。
两个例子(例子选自http://www.cnblogs.com/gold-worker/archive/2013/04/10/3013063.html)
例1:
package cn.dx; import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个整数"); while(in.hasNextInt()){ int num = in.nextInt(); System.out.println("请输入一个字符串"); String str = in.nextLine(); System.out.println("num="+num+",str="+str); System.out.println("请输入一个整数"); } } }
结果:
请输入一个整数
1231
请输入一个字符串
num=1231,str=
请输入一个整数
第二个String类型的参数没有读取进来。
=================================
例2:
package cn.dx; import java.util.Scanner; public class ScannerTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("请输入一个整数"); while(in.hasNextInt()){ int num = in.nextInt(); System.out.println("请输入一个字符串"); String str = in.next(); System.out.println("num="+num+",str="+str); System.out.println("请输入一个整数"); } } }
结果:
请输入一个整数
123
请输入一个字符串
sdjakl
num=123,str=sdjakl
请输入一个整数
213 jdskals
请输入一个字符串
num=213,str=jdskals
请输入一个整数
版权声明:本文为博主原创文章,未经博主允许不得转载。