一行数据包括一个较短的字符串S和一个较长的字符串T,用一个空格分隔。保证1<=|S|<=|T|<=100000。
如果短的字符串可以由长字符串中的字符构建出来,输出字符串 “true”,否则输出字符串 "false"。
a b
false
fj jfiejfiejfie
true
/* 我的想法是,每次把短字符串的字符拿出来在长字符串里找对应的字符, 如果找到结尾都成立则返回true,否则返回false */ import java.util.*; public class Main{ public static void main(String[] args){ Scanner input = new Scanner(System.in); String shortstr = input.next(); String longstr = input.next(); StringBuffer sb = new StringBuffer(); sb.append(longstr);//将长字符串放到sb中容易修改 for(int i = 0;i<shortstr.length();i++){ String s = String.valueOf(shortstr.charAt(i));//为了可以使用indexOf(String str) if(sb.indexOf(s)!=-1) sb.setCharAt(sb.indexOf(s),' ');//将已经使用的位置赋值为空格,防止二次使用 else{ System.out.println(false); return; } } System.out.println(true); } }比较笨拙的方法,不喜勿喷
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String s = scanner.next(); String t = scanner.next(); int[] chs = new int[26]; for (int i = 0; i < t.length(); i++) { chs[t.charAt(i) - 'a']++; } for (int i = 0; i < s.length(); i++) { chs[s.charAt(i) - 'a']--; } for (int i : chs) { if (i < 0) { System.out.println("false"); return; } } System.out.println("true"); } }