package com.heu.wsq;
/**
* 389. 找不同
* @author wsq
* @date 2020/12/18
* 给定两个字符串 s 和 t,它们只包含小写字母。
* 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
* 请找出在 t 中被添加的字母。
*
* 示例 1:
* 输入:s = "abcd", t = "abcde"
* 输出:"e"
* 解释:'e' 是那个被添加的字母。
*
* 链接:https://leetcode-cn.com/problems/find-the-difference
*/
public class FindTheDifference {
/**
* 使用异或来做位运算(异或表示对应位置不同即为1)
* 字符串s+t中,与s相同的字符必然是双数,双数做"异或"操作必然必会抵消从而变成0
* 而新增的元素为单数,即最后的结果就是新增的元素。
* @param s
* @param t
* @return
*/
public char findTheDifference(String s, String t){
int ans = 0;
for (char c : s.toCharArray()) {
ans ^= c;
}
for (char c : t.toCharArray()) {
ans ^= c;
}
return (char) ans;
}
public static void main(String[] args) {
String s = "abcd";
String t = "abcde";
FindTheDifference ff = new FindTheDifference();
char ans = ff.findTheDifference(s, t);
System.out.println(ans);
}
}
389. 找不同(位运算)
最新推荐文章于 2020-12-18 14:12:14 发布