数据结构与算法:leetcode_884_Uncommon Words from Two Sentences

  • Description
    We are given two sentences A and B. (A sentence is a string of space separated words. Each word consists only of lowercase letters.)

    A word is uncommon if it appears exactly once in one of the sentences, and does not appear in the other sentence.

    Return a list of all uncommon words.

    You may return the list in any order.

  • Note
    0 <= A.length <= 200
    0 <= B.length <= 200
    A and B both contain only spaces and lowercase letters.

  • Example
    Input: A = “this apple is sweet”, B = “this apple is sour”
    Output: [“sweet”,“sour”]

    Input: A = “apple apple”, B = “banana”
    Output: [“banana”]

  • Solution

public static String[] uncommonFromSentences(String A, String B) {
		String[] result;
		String[] mA = A.split(" ");
		String[] mB = B.split(" ");
		int maxIndex = mA.length > mB.length ? mA.length : mB.length;
		if (maxIndex == 0) {
			return null;
		}

		if (A.length() == 0) {
			return mB;
		}

		if (B.length() == 0) {
			return mA;
		}

		Map<Integer, String> mapA = new HashMap<>();
		Map<Integer, String> mapB = new HashMap<>();

		Set<String> resultSet;

		for (int i = 0; i < mA.length; i++) {
			mapA.put(i, mA[i]);
		}
		for (int i = 0; i < mB.length; i++) {
			mapB.put(i, mB[i]);
		}

		resultSet = new HashSet<>(mapA.size() > mapB.size() ? mapA.size() : mapB.size());

		for (int i = 0; i < mA.length; i++) {
			if (mapA.containsValue(mA[i]) != mapB.containsValue(mA[i])) {
				resultSet.add(mA[i]);
			}
		}

		for (int i = 0; i < mB.length; i++) {
			if (mapB.containsValue(mB[i]) != mapA.containsValue(mB[i])) {
				resultSet.add(mB[i]);
			}
		}

		result = resultSet.toArray(new String[resultSet.size()]);
		
		return result;
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值