写一个函数判断第一个串包含的字符是否都在第二个串中出现,是则返回true,否则返回false;
输入:
a3sd
dasynjdk3
输出:
true
算法思想:先扫描长串,第二个串,以字符的ascii码作为数组下标记录;然后扫描第一个串,检查对应位置如果有不是1的,则返回false;第一个串检查结束正常返回则返回true;时间复杂度O(n),空间复杂度O(1)。
java实现代码如下:
package com.mytest.coding;
import java.util.Scanner;
public class Str1AllinStr2 {
public static void main(String[] args) {
// 第一个串包含的字符是否都在第二个串中出现,是则打印true,否则打印false;
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext()){
String str1=scanner.nextLine();
String str2=scanner.nextLine();
System.out.println(findAllin(str1,str2));
}
}
private static boolean findAllin(String str1, String str2) {
byte[] arr=new byte[128];
for (int i=0;i<str2.length();i++) {
arr[str2.charAt(i)]=1;
}
for (int j=0;j<str1.length();j++) {
if(arr[str1.charAt(j)]!=1) {
System.out.println(str1.charAt(j));
return false;
}
}
return true;
}
}