首页 > 试题广场 >

字符串字符匹配

[编程题]字符串字符匹配
  • 热度指数:178494 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}对于给定的字符串 st,检查 s 中的所有字符是否都在 t 中出现。

输入描述:
\hspace{15pt}第一行输入一个长度为 1 \leqq {\rm len}(s) \leqq 200、仅由小写字母组成的字符串 s
\hspace{15pt}第二行输入一个长度为 1 \leqq {\rm len}(t) \leqq 200、仅由小写字母组成的字符串 t


输出描述:
\hspace{15pt}如果 s 中的所有字符都在 t 中出现,则输出 \rm true,否则输出 \rm false
示例1

输入

bc
abc

输出

true

备注:
\hspace{15pt}本题数据已规范为单组询问(2025/01/15)。
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str1 = in.nextLine();
         String str2 = in.nextLine();
         Set<Character> list1 = new HashSet<Character>();
        Set<Character> list2 = new HashSet<Character>();
         for(char c: str1.toCharArray()){
                list1.add(c);
         }
         for(char c: str2.toCharArray()){
                list2.add(c);
         }
          
         if(list2.containsAll(list1)){
            System.out.println(true);
         }else{
            System.out.println(false);
         }
    }
}

发表于 2025-05-18 23:40:13 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String s = in.nextLine();
            String t = in.nextLine();
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                if (!t.contains(String.valueOf(c))) {
                    System.out.println(false);
                    return;
                }
            }
            System.out.println(true);
        }
    }
}
发表于 2025-03-27 17:36:20 回复(0)

String.contains()

发表于 2025-01-28 19:36:03 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        // 输入数据
        Scanner in = new Scanner(System.in);
        String shortStr = in.nextLine();
        String longStr = in.nextLine();

        // 算法核心
        // 注意!虽然Character是对象,但是作为基本类型的包装类,在map中的主键依旧是“字面值哈希”而非“地址(引用)值哈希”
        // 1.遍历longStr,将其所有出现的字符登记其出现次数
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < longStr.length(); i++) {
            char c = longStr.charAt(i);
            int count = 1;
            if (map.containsKey(c)) {
                count += map.get(c);
            }
            map.put(c, count);
        }
        // 2.遍历shortStr,一旦发现某个字符不在map中,就报错
        boolean flag = true;
        for (int i = 0; i < shortStr.length(); i++) {
            char c = shortStr.charAt(i);
            if (!map.containsKey(c)) {
                flag = false;
                break;
            }
        }

        // 输出结果
        System.out.println(flag ? "true" : "false");
    }
}

发表于 2024-11-18 16:08:16 回复(0)
import java.util.Scanner;

public class Main {

	public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        //第一次输入少的字符串
        String pre = in.nextLine();
        //第二次输入多的字符串
        String after = in.nextLine();
        boolean isAllContains = true;
        for (char ch: pre.toCharArray()) {
            //长的不包含短的其中一个,isAllContains = false跳出当前循环
			if (!after.contains(ch+"")) {
				isAllContains = false;
				break;
			}
		}
        System.out.println(isAllContains);
        in.close();
    }
	
}

发表于 2024-09-26 20:47:11 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String shortStr = in.nextLine();
            String longStr = in.nextLine();

            boolean isExist = true;
            for(int i = 0;i<shortStr.length();i++){
                if(longStr.indexOf(shortStr.charAt(i)) == -1){
                    isExist = false;
                    break;
                }
            }

            System.out.print(isExist);
        }
    }
}

发表于 2024-04-02 14:12:17 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        char[] s1 = in.nextLine().toCharArray();
        char[] s2 = in.nextLine().toCharArray();
        HashSet<Character> set1 = new HashSet<>(s1.length);
        HashSet<Character> set2 = new HashSet<>(s2.length);
        for (char c : s1) {
            set1.add(c);
        }
        for (char c : s2) {
            set2.add(c);
        }
        System.out.println(set2.containsAll(set1));
    }
}

发表于 2024-01-01 13:38:45 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String str1 = in.nextLine();
        String str2 = in.nextLine();
        Set<Character> set1 = new TreeSet();
        Set<Character> set2 = new TreeSet();
        for (int i = 0; i < str1.length(); i++) {
            set1.add(str1.charAt(i));
        }
        for (int i = 0; i < str2.length(); i++) {
            set2.add(str2.charAt(i));
        }
        System.out.println(set2.containsAll(set1));
    }
}

发表于 2023-11-28 01:07:13 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        char[] s=in.nextLine().toCharArray();
        char[] l=in.nextLine().toCharArray();
        boolean[] letter=new boolean[26];
        for(int i=0;i<s.length;i++){
            letter[s[i]-'a']=true;
        }
        for(int i=0;i<l.length;i++){
            letter[l[i]-'a']=false;
        }
        for(int i=0;i<26;i++){
            if(letter[i]){
                System.out.print("false");
                return;
            }
        }
        System.out.print("true");
    }
}

发表于 2023-09-12 15:46:35 回复(0)
import java.util.Collections;
import java.util.HashSet;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String shortStr = sc.nextLine();
        String longStr = sc.nextLine();

        System.out.println(existInLongStr(shortStr, longStr));

    }

    public static boolean existInLongStr(String shortStr, String longStr) {
        return longStr.contains(shortStr);
//        HashSet<Character> set = new HashSet<Character>();
//        //长字符串转成字符数组添加到set中
//        for (char c : longStr.toCharArray()) {
//            set.add(c);
//        }
//        //
//        for (char c2 : shortStr.toCharArray()) {
//            if (!set.contains(c2)) {
//                return false;
//            }
//        }
//        return true;
    }
}
这样为什么不行啊,有没有佬知道的,包括后面的逻辑反转过来用例也只能通过55%
 for (char c2 : shortStr.toCharArray()) {
//            if (set.contains(c2)) {
//                return true;
//            }
//        }
//        return false;

发表于 2023-09-09 20:31:49 回复(0)
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line1 = br.readLine();
        String line2 = br.readLine();

        // 计算短的字符串
        String shortStr = line1.length() <= line2.length() ? line1 : line2;
        String longStr = line1.length() <= line2.length() ? line2 : line1;

        boolean flag = true;
        for (int i = 0; i < shortStr.length(); i++) {
            char c = shortStr.charAt(i);
            if (!longStr.contains(String.valueOf(c))) {
                flag = false;
                break;
            }
        }

        System.out.println(flag);

    }
}

发表于 2023-08-13 10:49:46 回复(0)
import java.io.*; 
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str1 = br.readLine();
        String str2 = br.readLine();
        boolean flag=true;
        // 方法一:
        for(int i=0;i<str1.length();i++){
            if(str2.indexOf(str1.charAt(i))==-1) flag=false;
        }
        System.out.println(flag);
        // //方法二:        
        // HashMap<Character,Integer> map= new HashMap<>();
        // for(int i=0;i<str2.length();i++){
        //     map.put(str2.charAt(i),1);
        // }
        // for(int i=0;i<str1.length();i++){
        //     //做!=1判断时,Integer需要拆箱,Integer为null时拆箱会出现异常
        //     if((map.get(str1.charAt(i))==null)||(map.get(str1.charAt(i))!=1)) flag=false;
        // }
        // System.out.println(flag);
    }
}


发表于 2023-07-06 17:34:22 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String line = in.nextLine();
        String longLine = in.nextLine();
        char[] charArray = line.toCharArray();
        char[] longLineArray = longLine.toCharArray();
        in.close();

        byte[] signArr = new byte[123];//使用数组下标映射的方法;z,对应的ASCII码值为122
        for (char c : longLineArray) {
            signArr[c] = 1;
        }
        int count = 0;
        for (char c : charArray) {
            count += signArr[c];
        }
        System.out.println(count==charArray.length);
    }
}
发表于 2023-06-11 11:25:50 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String a = in.nextLine();
        String b = in.nextLine();
        int count = 0;
        for (int i = 0; i < a.length(); i++) {
            String c = String.valueOf(a.charAt(i));
            int cha = b.indexOf(c);
            if (cha == -1) {
                System.out.println("false");
                break;
            } else {
                count++;
            }
        }
        if (count == a.length()) {
            System.out.println("true");
        }
    }
}

发表于 2023-06-07 09:51:22 回复(0)
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str1=in.nextLine();
        String str2=in.nextLine();
        LinkedList<Character> list1=new LinkedList<>();
        for(int i=0;i<str1.length();i++){
            list1.add(str1.charAt(i));
        }
        LinkedList<Character> list2=new LinkedList<>();
        for(int i=0;i<str2.length();i++){
            list2.add(str2.charAt(i));
        }
        for(int i=0;i<list1.size();i++){
        while(!list1.isEmpty()){
            if(list2.contains(list1.get(i))){
                list1.removeFirst();
            }else{
                System.out.print(false);
                return;
            }
        }
        System.out.print(true);
        } 
    }
}

发表于 2023-06-06 10:02:34 回复(0)
 Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            String a = in.next();
            String b = in.next();
            String shortStr = null;
            String longStr = null;
            if(a.length()>b.length()){
                shortStr = b;
                longStr = a;
            }else{
                shortStr = a;
                longStr = b;
            }
            String flag = "true";
            for(int i=0;i<shortStr.length();i++){
                if(!longStr.contains(String.valueOf(shortStr.charAt(i)))){
                    flag = "false";
                    break;
                }
            }
            System.out.println(flag);
        }
发表于 2023-04-12 23:36:41 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        char[] cr1 = in.nextLine().toCharArray();
        char[] cr2 = in.nextLine().toCharArray();
        int x = 0;
        int y = 0;
        // 将小写字母转换为int二进制的0-25位01标识  然后再&判断即可
        for (char c : cr1) {
            x |= (1 << (c - 'a' + 1));
        }
        for (char c : cr2) {
            y |= (1 << (c - 'a' + 1));
        }
        Boolean  f = (x & y) == x;
        System.out.println(f.booleanValue());
    }
}

发表于 2023-04-07 17:50:15 回复(0)
import java.util.Scanner;
import java.util.HashMap;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        String s1 = in.nextLine();
        String s2 = in.nextLine();

        HashMap<Character, Integer> map = new HashMap<>();

        for (int i = 0; i < s2.length(); i++)
            map.put(s2.charAt(i), i);

        for (int i = 0; i < s1.length(); i++) {
            if (map.containsKey(s1.charAt(i)) == false) {
                System.out.println(false);
                break;
            }else if(i == s1.length() - 1)
                System.out.print(true);
            }
        }
}

发表于 2023-03-25 12:37:01 回复(0)