【牛客网 - 华为机试】HJ81 字符串字符匹配
发布日期:2021-05-07 21:21:39 浏览次数:26 分类:精选文章

本文共 1702 字,大约阅读时间需要 5 分钟。

题目描述

判断短字符串中的所有字符是否在长字符串中全部出现。

请注意本题有多组样例输入。

输入描述:

输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。

输出描述:

如果短字符串的所有字符均在长字符串中出现过,则输出true。否则输出false。

示例1

输入

bc

abc
输出

true

解题思路

我的笨办法

public static void main(String[] args) {           Scanner sc = new Scanner(System.in);        while (sc.hasNextLine()) {               String s1 = sc.nextLine();            String s2 = sc.nextLine();            char[] c1 = s1.toCharArray();            char[] c2 = s2.toCharArray();            HashSet
set = new HashSet<>(); for (int i = 0; i < c2.length; i++) { set.add(c2[i]); } System.out.println(Arrays.toString(set.toArray())); int count = 0; for (char c : c1) { if (set.add(c)) { System.out.println(false); break; } count++; } if (count == c1.length) System.out.println(true); } }

优秀的解法

可以直接将短的字符串中的字符进行遍历,然后利用String的valueOf()方法判定是否存在在长字符中,则不需要浪费那么多的额外空间

并且不需要两个字符都遍历,而只需要遍历长字符串即可

public static void main(String[] args) throws IOException {           BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        String str = "";        String str2 = "";        while( (str = br.readLine()) != null && !"".equals(str)){               str2 = br.readLine();            char[] arr = str.toCharArray();            boolean judge = true;            for (char c : arr) {                   if (!str2.contains(String.valueOf(c))){                       judge = false;                    break;                }            }            System.out.println(judge);        }        br.close();    }
上一篇:【数据库】性能优化问题——分库分表
下一篇:【牛客网 - 华为机试】HJ26 字符串排序

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年03月22日 13时38分22秒