“惟有编程、不断地编程,才能成为牛人。”
题目描述
给定一长字符串a和一短字符串b。请问,如何快速的判断出短字符串b中的所有字符是否都在长字符串a中?
解法一:排序后轮训
如果允许排序,可以考虑先排序后轮训。例如,可以先对这两个字符串中的字母进行排序,然后再对两个字符串一次轮询。
常规情况下,两个字符串的排序需要O(mlog(m))+O(mlog(m))
次操作,之后的线性扫描需要O(m+n)
次操作。关于排序的方法,可以采用常用的快速排序。
import java.util.Arrays;
public class StringContain1 {
public static boolean StringContain(String a, String b) {
char[] a1 = a.toCharArray();
char[] b1 = b.toCharArray();
Arrays.sort(a1);
Arrays.sort(b1);;
for(int i = 0, j =0; j < b.length(); ) {
while(i < a.length() && a1[i] < b1[j])
i++;
if(i >= a.length() || a1[i] > b1[j])
return false;
j++;
}
return true;
}
public static void main(String[] args) {
String a = "abcd";
String b