【ccf】字符串匹配

  • 问题描述 
      给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。
  • 输入格式 
      输入的第一行包含一个字符串S,由大小写英文字母组成。 
      第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。 
      第三行包含一个整数n,表示给出的文字的行数。 
      接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。
  • 输出格式 
      输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串S的行。
  • 样例输入 
    Hello 


    HelloWorld 
    HiHiHelloHiHi 
    GrepIsAGreatTool 
    HELLO 
    HELLOisNOTHello
  • 样例输出 
    HelloWorld 
    HiHiHelloHiHi 
    HELLOisNOTHello
  • 样例说明 
      在上面的样例中,第四个字符串虽然也是Hello,但是大小写不正确。如果将输入的第二行改为0,则第四个字符串应该输出。 
    评测用例规模与约定 
      1<=n<=100,每个字符串的长度不超过100。

解题思路:大小写是否敏感,分别用两个函数表示,敏感的直接判断是否包含那个单词,不敏感的就全部转换成小写再去判断
代码:import java.util.ArrayList;
import java.util.Scanner;

public class Main4 {

    private static final int ArrayList = 0;
    private static final int String = 0;

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        String s = input.next();
        int a = input.nextInt();
        int n = input.nextInt();
        ArrayList<String> list = new ArrayList<String>();
        for(int i=0;i<n;i++){
            list.add(input.next());
        }
        if(a==0){
            ignoreCase(list,s);
        }else if(a==1){
            careCase(list,s);
        }else{
            System.out.println("操作数输入有误,无法判断是否区分大小写");
        }

    }
    
    
    public static void ignoreCase(ArrayList<String> list,String s){//忽略大小写
        String ss =s.toLowerCase();
        String sss;
        for(String a:list){
            sss= a.toLowerCase();
            if(sss.contains(ss)){
                System.out.println(sss);
            }
        }
    }
    
    public static void careCase(ArrayList<String> list,String s){//不忽略大小写
        for(String ss:list){
            if(ss.contains(s)){
                System.out.println(ss);
            }
        }
        
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值