【LeetCode】389. Find the Difference

来源:互联网 发布:健康饮品 知乎 编辑:程序博客网 时间:2024/06/14 05:35

问题描述

问题链接:https://leetcode.com/problems/find-the-difference/#/description

Given two strings s and t which consist of only lowercase letters.

String t is generated by random shuffling string s and then add one more letter at a random position.

Find the letter that was added in t.

Example:

Input:s = "abcd"t = "abcde"Output:eExplanation:'e' is the letter that was added.

我的代码

核心思路就是那个找哪个字母只出现了一次的问题里面用的异或。

public class Solution {    public char findTheDifference(String s, String t) {        /*        思路就是用异或,最后生下来的那个转成char        */        int mask = 0x0;        int sLen = s.length();        int tLen = t.length();        for(int i = 0; i < sLen; i++){            mask ^= (int)s.charAt(i);        }        for(int i = 0; i < tLen; i++){            mask ^= (int)t.charAt(i);        }        return (char)mask;    }}

打败了33.47%的Java代码。来学习一下讨论区。

讨论区

Java solution using bit manipulation

链接地址:https://discuss.leetcode.com/topic/55912/java-solution-using-bit-manipulation/2

这个代码真是优雅。太美了。

public char findTheDifference(String s, String t) {    int n = t.length();    char c = t.charAt(n - 1);    for (int i = 0; i < n - 1; ++i) {        c ^= s.charAt(i);        c ^= t.charAt(i);    }    return c;}
0 0
原创粉丝点击