zoukankan      html  css  js  c++  java
  • 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 = { 41212 };
            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));
        }
    }
  • 相关阅读:
    JavaScript数组
    JavaScript正则表达式之分组匹配 / 反向引用
    JavaScript函数之作用域 / 作用链域 / 预解析
    JavaScript正则表达式实例汇总
    python+unittets框架
    locust简介
    seleniumselenium各种技巧,滑动,提示框,窗口大小,iframe切换等等
    selenium 定位元素的方式
    jmeter环境配置,配置中文环境,原理-1
    appium环境搭建+真机+获取package和activity来验证是否搭建成功+appium自带的定位元素
  • 原文地址:https://www.cnblogs.com/xiaoshahai/p/12073421.html
Copyright © 2011-2022 走看看