【Java笔试题】字符串包含问题

1、题目

给定两个分别由字母组成的字符串str1和字符串str2,字符串str2的长度比字符串str1短,请问,如何最快地判断字符串str2中所有字母是否都在字符串str1里?例如,字符串str1为“ABCD”,str2为“AC”,则返回true,因为字符串str2中的字母A和B都在字符串str1中,但如果str2为“AE”,则返回false,因为字符串str2中的字母E不在字符串sstr1中。

2、解题思想

因为直接比较字符串不太好比较,所以我们可以先将其转化为字符数组,然后利用角标对字符数组进行循环比较。

3、Java代码

public class StringContain {
    public static void main(String[] args) {
        String str1 = "ABCD";
        String str2 = "AA";
        System.out.println(stringContain(str1,str2));;
    }

    public static boolean stringContain(String str1,String str2) {
        //将字符串转为字符数组
        char[] a = str1.toCharArray();
        char[] b = str2.toCharArray();
        //进行循环比较
        for (int i = 0; i < b.length; ++i) {
            int j;
            //如果a[j]等于b[i],则跳出本次循环,反之j+1
            for (j = 0; (j < a.length) && (a[j] != b[i]); ++j) 
                ;    
            if (j >= a.length) {
                return false;
            }
        }
        return true;
    }
}

你可能感兴趣的:(Java笔试题)