首页 > 试题广场 >

字符串字符匹配

[编程题]字符串字符匹配
  • 热度指数:160442 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
判断短字符串S中的所有字符是否在长字符串T中全部出现。
请注意本题有多组样例输入。
数据范围:
进阶:时间复杂度:,空间复杂度:

输入描述:

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



输出描述:

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

示例1

输入

bc
abc

输出

true

说明

其中abc含有bc,输出"true"
 
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)
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.hasNextLine()) { // 注意 while 处理多个 case
            String str1=in.nextLine();
            String str2=in.nextLine();
            char[] arr=str1.toCharArray();
            int index=0;
            for(int i=0;i<arr.length;i++){
                if(str2.replace(String.valueOf(arr[i]),"").length()<str2.length()){
                    continue;
                }
                else{
                    index=1;
                    break;
                }
            }
            if(index==1){
                System.out.println("false");
            }else{
                System.out.println("true");
            }
        }
    }
}

发表于 2023-03-06 19:54:18 回复(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 min = in.next();
            String max = in.next();
            boolean res = true;
            for(int i = 0; i < min.length(); i++) {
                boolean find = false;
                for(int j = 0; j < max.length(); j++) {
                    if(max.charAt(j) == min.charAt(i)) {
                        find = true;
                        break;
                    }
                }
                if(!find){
                    res = false;
                    break;
                }
            }
            System.out.println(res);
        }
    }
}
发表于 2023-02-16 09:48:34 回复(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 str=in.nextLine();
        String str1=in.nextLine();
        int count=0;
        for(char c:str.toCharArray()){
            if(str1.contains(String.valueOf(c))) count++;
        }
       
        if(count==str.length())  System.out.print(true);
        else System.out.print(false);
    }
}
发表于 2023-02-03 14:44:35 回复(0)
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print(in.nextLine().replaceAll("[" + in.nextLine() + "]", "").length()==0?true:false);
    }
}

发表于 2023-01-10 23:39:20 回复(0)
遍历
import java.util.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        char[] array1 = in.nextLine().toCharArray();
        char[] array2 = in.nextLine().toCharArray();
        ArrayList<Character> list = new ArrayList<>();
        for(int i = 0;i<array2.length;i++){
            list.add(array2[i]);
        }
        boolean flag = true;
        for(int i =0;i<array1.length;i++){
            if(!list.contains(array1[i])){
                flag = false;
                break;
            }
        }
        System.out.print(flag);
    }
}

发表于 2023-01-08 17:03:55 回复(0)
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            String str1 = sc.next();
            String str2 = sc.next();
            boolean flag = true;
            for(int i=0;i<str1.length()-1;i++){
                if(str2.contains(str1.substring(i,i+1))){
                    continue;
                }else{
                    flag = false;
                }
            }
            System.out.println(flag);
        }
    }
}
发表于 2022-12-11 21:54:28 回复(0)