Bit Manipulation-leetcode
Bit Manipulation
Find the Difference
/*
* 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.
*/
public class Lc389 {
/*
* 思路:置换
*
* 由于t比仅多一位,则将t的最后为假定成不同的字符,然后t和s做差.
*/
public static char findTheDifference(String s, String t) {
char[] charS = s.toCharArray();
char[] charT = t.toCharArray();
// abcd
// abcde
int res = t.charAt(s.length());
for (int i = 0; i < charS.length; i++) {
res -= (int) charS[i];
res += (int) charT[i];
}
return (char) res;
}
public static void main(String[] args) {
String s = "abcd";
String t = "abcde";
System.out.println(findTheDifference(s, t));
}
}
Single Number
import java.util.Arrays;
/*
*
* iven a non-empty array of integers, every element appears twice except for one. Find that single one.
*
*
*Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
*/
public class Lc136 {
public static int singleNumber(int[] nums) {
if (nums.length == 0) {
return 0;
}
Arrays.sort(nums);
/*
* 三种情况 1 22 33 11 2 33 11 22 3
*/
for (int i = 0; i < nums.length - 2; i++) {
if (nums[i] != nums[i + 1] && i == 0) {
return nums[0];
}
if (nums[i] != nums[i + 1] && nums[i + 1] != nums[i + 2]) {
return nums[i + 1];
}
}
return nums[nums.length - 1];
}
public static void main(String[] args) {
int[] nums = { 4, 1, 2, 1, 2 };
System.out.println(singleNumber(nums));
}
}
Maximum Product of Word Lengths
/*
* Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0.
* 给与一个字符串数组,找到俩个单词长度乘积的最大值,要求,单词不共享相同字母,你可以认为所有的单词都是小写字母,如果没有这样的俩个三次存在则返回0;
*/
public class Lc318 {
/*
* 思路:在计算机中int由32位,小写的字母一个26个可以让后26为对应26个字母,对应位置由该字母则为1,反之则为0;
*
* 对一个单词进行左移以及或操作知道一个单词所有字母都处理完成。一次类推
*
* 比较俩个单词的对应数字进行与操作,(都为则1)如果为0,即俩个单词没有一个字母重复则进行计算
*
* 注意:俩个单词必须完全不相同,没有一个字母重复才可以。
*/
public static int maxProduct(String[] words) {
int[] mask = new int[words.length];
int res = 0;
for (int i = 0; i < words.length; i++) {
for (char c : words[i].toCharArray()) {
mask[i] |= 1 << (c - 'a');
}
// 这里,最大遍历的位置为i-1
for (int j = 0; j < i; j++) {
if ((mask[i] & mask[j]) == 0) {
res = Math.max(res, words[i].length() * words[j].length());
}
}
}
return res;
}
public static void main(String[] args) {
String words[] = { "abcd", "cde" };
System.out.println(maxProduct(words));
}
}
Bit Manipulation-leetcode的更多相关文章
- [LeetCode] All questions numbers conclusion 所有题目题号
Note: 后面数字n表明刷的第n + 1遍, 如果题目有**, 表明有待总结 Conclusion questions: [LeetCode] questions conclustion_BFS, ...
- Leetcode: Sum of Two Integers && Summary: Bit Manipulation
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Exam ...
- 【LeetCode】位运算 bit manipulation(共32题)
[78]Subsets 给了一个 distinct 的数组,返回它所有的子集. Example: Input: nums = [,,] Output: [ [], [], [], [,,], [,], ...
- leetcode@ [68] Text Justification (String Manipulation)
https://leetcode.com/problems/text-justification/ Given an array of words and a length L, format the ...
- LeetCode编程训练 - 位运算(Bit Manipulation)
位运算基础 说到与(&).或(|).非(~).异或(^).位移等位运算,就得说到位运算的各种奇淫巧技,下面分运算符说明. 1. 与(&) 计算式 a&b,a.b各位中同为 1 ...
- [LeetCode] 190. Reverse Bits_Easy tag: Bit Manipulation
Reverse bits of a given 32 bits unsigned integer. Example: Input: 43261596 Output: 964176192 Explana ...
- [LeetCode] 405. Convert a Number to Hexadecimal_Easy tag: Bit Manipulation
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s compl ...
- [LeetCode] 476. Number Complement_Easy tag: Bit Manipulation
这个题目思路就是比如101 的结果是010, 可以从111^101 来得到, 那么我们就需要知道刚好比101多一位的1000, 所以利用 while i <= num : i <<= ...
- Leetcode Tags(13)Bit Manipulation
一.477.汉明距离总和 输入: , , 输出: 解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010.(这样表示是为了体现后四位之间关系) HammingDistance( ...
- [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字
Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...
随机推荐
- BIOS安全设置
1.开机按F2进入BIOS 2.进入 Security 界面 3.Set user password 用户密码 开机密码 设置为123456 4.Set supervisor password 进BI ...
- JavaScript数组去重(12种方法,史上最全)
参考博客:https://segmentfault.com/a/1190000016418021?utm_source=tag-newest
- NIO Buffer 内部机理使用姿势
关于NIO Buffer中4个重要状态属性 position.limit.capacity 与 mark Buffer本身是一个容器,称作缓冲区,里面包装了特定的一种原生类型,其子类包括ByteBuf ...
- Java中的两种异常类型是什么?他们有什么区别?
一.Throwable是所有异常的根,java.lang.Throwable Error是错误,java.lang.Error Exception是异常,java.lang.Exception 二.E ...
- webpack学习2.3webpack核心概念
核心概念(四个) Entry(入口) Output(出口) Loaders()来处理其他类型的资源文件 Plugins(插件) 1.入口(Entry) 作用:代码的入口,打包的入口,单个或多个, 示例 ...
- 简单学习【1】——使用webpack
使用webpack webpack命令 webpack配置 第三方脚手架 1.webpack命令 webpack - h (webpack 所有的选项) webpack -v (查看webpack的版 ...
- Django day03之学习知识点
今日是路由层学习: 3.路由匹配 3.1 正则表达式的特点: 一旦正则表达式能够匹配到内容,会立刻结束匹配关系 直接执行对应的函数.相当于采用就近原则,一旦找到就不再继续往下走了 重点: 正则表达式开 ...
- ASP.NET操作Excel
使用NPOI操作Excel,无需Office COM组件 部分代码来自于:https://docs.microsoft.com/zh-tw/previous-versions/ee818993(v=m ...
- Cobbler 2.x安装与配置
软件环境 Centos7.3 Cobbler 2.8.1 1.下载.编译和安装 创建自动安装脚本cobbler-install.sh #!/bin/bash # File Name: /data/sr ...
- Pikachu-CSRF(跨站请求伪造)
Pikachu-CSRF(跨站请求伪造) CSRF(跨站请求伪造)概述 Cross-site request forgery 简称为“CSRF”,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一 ...