NC247576. 牛牛写情书
描述
牛牛给牛妹写了一封情书(仅包含小写字母到),但是被牛可乐截获了,由于牛可乐也喜欢牛妹,所以往这份情书里增加了许多数字和特殊字符(也可以不加),最后收到情书的牛妹想知道原本的情书是否包含某个字符串 。如果包含则输出 YES,否则输出 NO。
包含指 是原本情书的子串,子串即任意连续的字符构成的子字符串,例如对于字符串 ," "," "," " 不是该字符串的子串," "," "是该字符串的子串。
牛可乐添加的数字和特殊字符仅包含以下这些:
0123456789+-*|,.~!@#$%^&()[]{}'";:?<>\/
输入描述
第一行输入两个正整数 , 表示字符串 的长度, 表示字符串 的长度。
第二行输入一个字符串 ,代表牛妹最后收到的情书。
第三行输入一个字符串 ,代表牛妹想知道原本的情书是否包含的单词。
保证 和 中都不包含空格。
输出描述
输出一行一个YES或者NO代表答案。
示例1
输入:
25 4 niu1niun\|olo5ve,ni+um/ei love
输出:
YES
示例2
输入:
5 4 liike like
输出:
NO
PHP 解法, 执行用时: 10ms, 内存消耗: 3108K, 提交时间: 2023-08-10 10:37:42
<?php $input = explode(' ', fgets(STDIN)); $n = intval($input[0]); $m = intval($input[1]); $s = fgets(STDIN); $k = fgets(STDIN); $ans = ''; for ( $i = 0; $i < $n; $i++ ) { if ( ord($s[$i]) >= ord('a') && ord($s[$i]) <= ord('z') ) $ans .= $s[$i]; } echo strpos($ans, trim($k)) === false ? "NO" : "YES";
Java 解法, 执行用时: 122ms, 内存消耗: 14600K, 提交时间: 2023-08-10 10:22:38
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); String str = sc.next(); String key = sc.next(); String ans = ""; for (int i = 0; i < n; i++) { int a = str.charAt(i) - 'a'; if ( a>=0 && a<26 ) ans += str.charAt(i); } System.out.println(ans.contains(key) ? "YES" : "NO"); } }
Go 解法, 执行用时: 4ms, 内存消耗: 1284K, 提交时间: 2023-08-10 10:19:37
package main import ( "bufio" "fmt" "os" "strconv" "strings" ) var n, m int func main() { sc := bufio.NewScanner(os.Stdin) sc.Split(bufio.ScanWords) sc.Buffer(make([]byte, 1024*1024), 1024*1024) n, m = scanInt(sc), scanInt(sc) sc.Scan() s := sc.Text() sc.Scan() k := sc.Text() t := []rune{} for _, v := range s { if v >= 'a' && v <= 'z' { t = append(t, v) } } if strings.Contains(string(t), k) { fmt.Print("YES") } else { fmt.Print("NO") } } func scanInt(scanner *bufio.Scanner) int { scanner.Scan() a, _ := strconv.Atoi(scanner.Text()) return a }