藍橋試題 算法提高 字符串匹配 JAVA

問題描述
  給出一個字符串和多行文字,在這些文字中找到字符串出現的那些行。你的程序還需支持大小寫敏感選項:當選項打開時,表示同一個字母的大寫和小寫看作不同的字符;當選項關閉時,表示同一個字母的大寫和小寫看作相同的字符。
輸入格式
  輸入的第一行包含一個字符串S,由大小寫英文字母組成。
  第二行包含一個數字,表示大小寫敏感的選項,當數字爲0時表示大小寫不敏感,當數字爲1時表示大小寫敏感。
  第三行包含一個整數n,表示給出的文字的行數。
  接下來n行,每行包含一個字符串,字符串由大小寫英文字母組成,不含空格和其他字符。
輸出格式
  輸出多行,每行包含一個字符串,按出現的順序依次給出那些包含了字符串S的行。
樣例輸入
Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello
樣例輸出
HelloWorld
HiHiHelloHiHi
HELLOisNOTHello
樣例說明
  在上面的樣例中,第四個字符串雖然也是Hello,但是大小寫不正確。如果將輸入的第二行改爲0,則第四個字符串應該輸出。

思路:1爲敏感,0爲不敏感,直接if判斷一下即可,接下來就利用contions直接判斷輸入的字符串裏面是否含有,第一次輸入的字符串。

補充:next()方法讀取到空白符就結束l;

nextLine()讀取到回車結束也就是“\r”;

詳情:https://blog.csdn.net/superme_yong/article/details/80543995

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String s1 = scanner.nextLine();
		int n = scanner.nextInt();
		int m = scanner.nextInt();
		if (n == 1) {
			String[] arr = new String[m];       // 存放m個輸入字符串
			scanner.nextLine();                 // 按下Enter換行
			for (int i = 0; i < m; i++) {       
				arr[i] = scanner.nextLine();    
			}
			for (int i = 0; i < m; i++) {
				if (arr[i].contains(s1)) {      // 如果數組裏有輸入的第一個字符串
					System.out.println(arr[i]); // 輸出即可
				}
			}
		} else {
			s1 = s1.toLowerCase();              // 全部轉成小寫
			String[] a = new String[m];         // 定義兩個數組
			String[] b = new String[m];
			scanner.nextLine();                 // 按下Enter換行
			for (int i = 0; i < m; i++) {
				a[i] = scanner.nextLine();      // 用戶輸入字符串
				b[i] = a[i].toLowerCase();      // b複製a,並且轉換成小寫
			}
			for (int i = 0; i < m; i++) {
				if (b[i].contains(s1)) {        // 如果b含有輸入的第一個字符串
					System.out.println(a[i]);   // 輸出a數組的字符串即可
				}
			}
		}
	}
}

小劇場:人生或許就是一具皮囊,打包攜帶着一顆心的羈旅。

英文版:Life may be a leather bag,packed with a heart.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章