55.Compare Strings-比较字符串(容易题)

原创 2016年08月28日 23:07:33

比较字符串

  1. 题目

    比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母

    注意事项

    在 A 中出现的 B 字符串里的字符不需要连续或者有序。

  2. 样例

    给出 A = “ABCD” B = “ACD”,返回 true

    给出 A = “ABCD” B = “AABC”, 返回 false

  3. 题解

1.最简单的暴力解法就不解释了。

public class Solution {
    /**
     * @param A : A string includes Upper Case letters
     * @param B : A string includes Upper Case letter
     * @return :  if string A contains all of the characters in B return true else return false
     */
    public boolean compareStrings(String A, String B) {
        if (B == null)
        {
            return true;
        }
        if (B.length() == 0)
        {
            return A != null;
        }
        if (A == null || A.length() < B.length())
        {
            return false;
        }

        char[] a = A.toCharArray();
        char[] b = B.toCharArray();
        int index = a.length-1;

        for (int j = 0; j < b.length; j++)
        {
            boolean bFind = false;
            for (int i = 0; i <= index; i++)
            {
                if (b[j] == a[i])
                {
                    char temp = a[index];
                    a[index] = a[i];
                    a[i] = temp;
                    index--;
                    bFind = true;
                    break;
                }
            }
            if (!bFind)
            {
                return false;
            }
        }

        return true;        
    }
}

2.HashMap的思想,为两个字符串建立两个长度为26的数组,按照A-0,B-1的顺序将字符串的字符全部装入数组,并将数组对应位置的值按个数计数,最后比较两个数组即可,O(n)。

public class Solution {
    /**
     * @param A : A string includes Upper Case letters
     * @param B : A string includes Upper Case letter
     * @return :  if string A contains all of the characters in B return true else return false
     */
    public boolean compareStrings(String A, String B) {
        int[] arrA = new int[26];
        int[] arrB = new int[26];

        for (int i=0;i<A.length();i++)
        {
            arrA[A.charAt(i)-65]++;
        }
        for (int j=0;j<B.length();j++)
        {
            arrB[B.charAt(j)-65]++;
        }
        for (int k = 0;k<arrB.length;k++)
        {
            if (arrB[k] != 0 && arrB[k] > arrA[k])
            {
                return false;
            }
        }

        return true;
    }
}

Last Update 2016.8.28

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

lintcode55:比较两个字符串A和B,确定A中是否包含B中所有的字符。

*样例 给出 A = “ABCD” B = “ACD”,返回 true 给出 A = “ABCD” B = “AABC”, 返回 false 注意 在 A 中出现的 B 字符串里的字符不需要连...

细节杂记 移除字符串中的字符 remove indexof 字符串大小比较 compare

string a = new string(); ...//这里设置字符串a的值 //查找"string"并删除 int i = a.IndexOf("string"); a=a.Remove(i,...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

55. 让接口容易正确使用且难以错误使用

让接口容易正确使用且难以错误使用         件开发中最常见的一项任务便是接口规范了。接口遍布于抽象的最高级(用户接口)、最低层(函数接口)以及中间的层次(类接口、库接口等)。不管你的工作是指定...

53.Reverse Words in a String-翻转字符串(容易题)

翻转字符串 题目给定一个字符串,逐个翻转字符串中的每个单词。 说明单词的构成:无空格字母构成一个单词 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括 如何处理两个单词间的...

leetcode -- Multiply Strings -- python容易处理,需要看其他解法

https://leetcode.com/problems/multiply-strings/python 一行搞定。因为乘法结果太大的话,python会自动增加存储位数。这道题目还要看看其他解法。 ...

[Amazon] Two Strings Are Anagrams (Compare Strings)

Write a method anagram(s,t) to decide if two strings are anagrams or not. What is Anagram? - Tw...

【leetcode 字符串处理】Compare Version Numbers

leetcode新题,Compare Version Numbers,字符串处理。题意:题意很清晰,就是比较“版本号”大小,给定的版本号version1和version2是字符串类型的,当versio...

Compare Version Numbers字符串的应用+小技巧

题目描述 leetcode 中等难度题 “165. Compare Version Numbers” 评价 该题的题目描述的例子举得不是很好,会产生误导(至少我一开始就理解错题目了)。应该举如下...

HUST 1004 String Compare(字符串前缀对)

题目链接:http://acm.hust.edu.cn/problem.php?id=1004 Maybe there are 750,000 words in English and some w...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)