500.键盘行 693.交替位二进制数(java实现)

2023-10-30

键盘行

题目:给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。

示例1:

输入: ["Hello", "Alaska", "Dad", "Peace"]
输出: ["Alaska", "Dad"]

注意:

  1. 你可以重复使用键盘上同一字符。

  2. 你可以假设输入的字符串将只包含字母。

这个题目比较简单,只要将每个字母对应的行数用键值对的形式存起来,然后遍历字符串中每个字母是否和第一个字母在同一行,不在同一行则跳出循环,该字符串不符合条件。代码如下:

        HashMap<Character, Integer> map = new HashMap<>();
        map.put('q', 0);
        map.put('w', 0);
        map.put('e', 0);
        map.put('r', 0);
        map.put('t', 0);
        map.put('y', 0);
        map.put('u', 0);
        map.put('i', 0);
        map.put('o', 0);
        map.put('p', 0);

        map.put('a', 1);
        map.put('s', 1);
        map.put('d', 1);
        map.put('f', 1);
        map.put('g', 1);
        map.put('h', 1);
        map.put('j', 1);
        map.put('k', 1);
        map.put('l', 1);

        map.put('z', 2);
        map.put('x', 2);
        map.put('c', 2);
        map.put('v', 2);
        map.put('b', 2);
        map.put('n', 2);
        map.put('m', 2);

        List<String> res = new ArrayList<>();
        for (int i = 0; i < words.length; i++) {
            String s = words[i].toLowerCase();
            int first = map.get(s.charAt(0));
            boolean diff = false;
            for (int j = 1; j < s.length(); j++) {
                if (map.get(s.charAt(j)) != first) {
                    diff = true;
                    break;
                }
            }
            if (!diff) {
                res.add(words[i]);
            }
        }
        String[] resString = new String[res.size()];
        for (int i = 0; i < resString.length; i++) {
            resString[i] = res.get(i);
        }

        return resString;

需要注意的是,字符串中的字母有可能大小不一样,需要统一后进行判断。

693.交替位二进制数

给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。

示例 1:

输入: 5
输出: True
解释:
5的二进制数是: 101

示例 2:

输入: 7
输出: False
解释:
7的二进制数是: 111

示例 3:

输入: 11
输出: False
解释:
11的二进制数是: 1011

 示例 4:

输入: 10
输出: True
解释:
10的二进制数是: 1010

这题是关于位操作的一个题目,我们可以发现5的二进制数101往右移一位后再跟5做加法或者异或运算都是得到相同的结果011,所以第一步做相加还是异或都可以,可以发现只要是交替位二进制数第一步得到的结果都是类似这样的11......1111,所有位置上都是1,我们只要判断第一步运算后的结果的二进制所有位是否为1就行了,要判断这个,只要将第一步结果11再加上1得到100,然后再和11进行按位与操作得到0,即可判断这个数就是交替位二进制数,代码如下:

    public boolean hasAlternatingBits(int n) {
        return ((n + (n >> 1) ) & (n + (n >> 1)+1)) == 0;
    }

就一行简单的代码就可以了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

500.键盘行 693.交替位二进制数(java实现) 的相关文章

随机推荐

  • Vue-admin-template笔记(一)

    Vue admin template项目 一 关于Vue admin template 1 1 介绍 vue element admin 是一个后台前端解决方案 它基于 vue 和 element ui实现 可以把 vue element
  • 图片转换成16进制数据,在显示成图片

    1 目的 在串行 或者网络通信的时候 往往需要把图片解析成16进制的数据 方便数据的传输 而在另一端接收到数据后 在将接收到的数据显示成图片 2 代码 include mainwindow h include ui mainwindow h
  • 机械革命蛟龙16Windows重装流程

    1 必要文件的拷贝 将桌面以及D盘一些重要文件拷贝入移动硬盘 2 重装 利用的是Win11自带的系统重装功能 设置 gt Windows更新 gt 高级选项 gt 恢复 gt 重置此电脑中的初始化电脑 gt 删除所有内容 gt 本地重新安装
  • rabbitmq安装

    1 安装 1 1 安装Erlang gt yum install y gcc gcc c glibc devel make ncurses devel openssl devel autoconf java 1 8 0 openjdk de
  • Linux下安装mysql

    1 下载 http dev mysql com downloads mysql 或者使用wget下载 wget http dev mysql com get Downloads MySQL 5 6 MySQL 5 6 22 1 el6 i6
  • 【MySQL入门到精通-黑马程序员】MySQL基础篇-概述及MySQL环境配置

    文章目录 前言 一 MySQL概述 1 1 数据库相关概念 1 2 MySQL数据库 二 数据模型 三 总结 前言 本专栏文章为观看黑马程序员 MySQL入门到精通 所做笔记 课程地址在这 如有侵权 立即删除 一 MySQL概述 1 1 数
  • SCI数据库使用手册(无图版)

    含图笔记在有道云笔记中 https note youdao com s O3YuEZJc 文章目录 1 SCI数据库的简介 对应作业3的第一问 2 打开SCI检索 对应作业3的第一问 3 关键词检索 以KBQA为例 对应作业3的第二问 3
  • Android获取当前位置(GPS和网络定位)

    1 比较 GPS准确度高但耗电多 网络定位耗电少但准确度低 2 代码 添加权限 AndroidManifest xml
  • vue使用百度地图(标点、点击后展示弹框、多个标点、点聚合)

    安装百度地图 npm install vue baidu map save 在百度地图开放平台申请AK 全局注册 在项目的main js中引入 import Vue from vue import baiduMap from vue bai
  • Shell脚本编写教程【五】——Shell 基本运算符

    Shell脚本编写教程 五 Shell 基本运算符 目录 https blog csdn net shn111 article details 131590488 参考教程 https www runoob com linux linux
  • 练习-Java类和对象之包的定义

    第1关 练习 Java类和对象之包的定义 任务描述 编程要求 测试说明 任务描述 本关任务 定义一个电影类和一个电影测试类 在电影测试类中通过对象完成成员变量和成员方法的使用 编程要求 仔细阅读右侧编辑区内给出的代码框架及注释 在 Begi
  • 【Docker】Docker网络

    1 配置容器网络 1 通过实训平台进入到操作系统界面 在 后输入docker run i t d net none ubuntu bin bash命令 启动一个 bin bash容器 示例代码如图1所示 2 在 后输入docker ps a
  • ant-vue中的a-icon使用方法

    Ant Design 图标库 直接引入的使用方式 你直接点击相应的图标会自动将图标名称复制到你的剪切板上
  • Unity3D游戏开发介绍

    Unity3D游戏开发介绍 Unity3D Unity是实时3D互动内容创作和运营平台 包括游戏开发 美术 建筑 汽车设计 影视在内的所有创作者 借助Unity将创意变成现实 Unity平台提供一整套完善的软件解决方案 可用于创作 运营和变
  • CenOS7 下安装wget命令

    1 安装vsfdp yum y install vsftpd 2 关闭防火墙 systemctl stop firewalld service 3 将本机目录下的wget安装文件上传至虚拟机 scp wget 1 14 18 el7 6 1
  • 案例:用户信息列表展示

    1 需求 用户信息的增删改查操作 2 设计 1 技术选型 Servlet JSP MySQL JDBCTempleat Duird BeanUtilS tomcat 2 数据库设计 create database day17 创建数据库 u
  • uva11292 Dragon of Loowater (水题)

    include
  • 电脑怎么在Bios中开启虚拟化

    1 开机按F1进入BIOS Configuration Secuity 2 然后选择Virtulize 或者Intel Virtual Technolody 设置成Enable 3 F10保存 重启
  • String类为什么是不可变的

    String StringBuilder StringBuffer是经常考的东西 其中 String是不可变的 为什么呢 简单解释如下 String类new了一个对象后 我们看到的该对象只是引用 存放了真正内存的地址 并不是真的内存值 如果
  • 500.键盘行 693.交替位二进制数(java实现)

    键盘行 题目 给定一个单词列表 只返回可以使用在键盘同一行的字母打印出来的单词 键盘如下图所示 示例1 输入 Hello Alaska Dad Peace 输出 Alaska Dad 注意 你可以重复使用键盘上同一字符 你可以假设输入的字符