字符串匹配
- 问题描述
给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。 - 输入格式
输入的第一行包含一个字符串S,由大小写英文字母组成。
第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。
第三行包含一个整数n,表示给出的文字的行数。
接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。 - 输出格式
输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串S的行。 - 样例输入
Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello - 样例输出
HelloWorld
HiHiHelloHiHi
HELLOisNOTHello 样例说明
在上面的样例中,第四个字符串虽然也是Hello,但是大小写不正确。如果将输入的第二行改为0,则第四个字符串应该输出。
评测用例规模与约定
1<=n<=100,每个字符串的长度不超过100。
代码
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String s=in.nextLine();//字符串s
int option=in.nextInt();//大小写敏感选项,0(不敏感),1(敏感)
int n=in.nextInt();//给出的文字行数
ArrayList<String> list=new ArrayList<String>();
while(n>=0){
list.add(in.nextLine());//n行存储在集合中
n--;
}
in.close();
if(option==0){
//大小写不敏感
ignoreCase(s,list);
}else if(option==1){
//大小写敏感
caseSensitive(s,list);
}else{
System.out.println("error!");
}
}
//大小写敏感
public static void caseSensitive(String s,ArrayList<String> list){
Iterator<String> it=list.iterator();
while(it.hasNext()){
String temp=it.next();
if(temp.contains(s))
System.out.println(temp);
}
}
//大小写不敏感
public static void ignoreCase(String s,ArrayList<String> list){
String ss=s.toUpperCase();
Iterator<String> it=list.iterator();
while(it.hasNext()){
String temp=it.next();
String temp1=temp.toUpperCase();//先转换成大写
if(temp1.contains(ss))
System.out.println(temp);
}
}
}