题目:判定字符是否唯一:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false示例 2:输入: s = "abc"输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。思路:
可以使用二进制位记录,这样效率比较高

1.代码如下 IsUnique.java:

package com.yuhl.right.leetcode;/*** @author yuhl* @Date 2020/10/25 7:31* @Classname IsUnique* @Description* 判定字符是否唯一:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。** 示例 1:* 输入: s = "leetcode"* 输出: false** 示例 2:* 输入: s = "abc"* 输出: true* 限制:** 0 <= len(s) <= 100* 如果你不使用额外的数据结构,会很加分。*/
public class IsUnique {public static void main(String[] args) {String a = "abc";boolean unique = isUnique(a);System.out.println(unique);}public static boolean isUnique(String astr) {//既然不使用其他数据结构,那么HashMap\list\array就都不使用了。可以使用位运算。//ascii 2^7=128位(留一位校验位),一个long是8个字节,8*8=64位,可以使用2个long类型即128位来代替。//默认位0 如果一次,就把相应位上置一。详细代码如下:long hightbit = 0L;//00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000long lowbit = 0L;//00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000for(char c :astr.toCharArray()){if(c>=64){//0-63在低位中long highttmp = 1L << (c - 64);//1L = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000if((hightbit & highttmp) != 0){//说明相同位置上有相同的1,即出现过。return false;}hightbit |= highttmp ;//hightbit = hightbit |highttmp;//把highttmp中相应位置上的1移动到hightbit相应位置上}}for(char c :astr.toCharArray()){if(c<64){//0-63在低位中long lowtmp = 1L << c;//1L = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000if((lowbit & lowtmp) != 0){//说明相同位置上有相同的1,即出现过。return false;}lowbit |= lowtmp ;//hightbit = hightbit |highttmp;//把highttmp中相应位置上的1移动到hightbit相应位置上}}return true;}}

2.执行结果:

"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe"
true

算法014:判定字符串中字符是否唯一:实现一个算法,确定一个字符串 s 的所有字符是否全都不同。相关推荐

  1. leetcode练习--字符串中第一个唯一字符

    查找字符串中第一个唯一的字符,返回其index: 这里我用了hash的方法,没遇到一个新的字符就会将其保存至map中,我以为map里面会按照insert的顺序进行排放,结果map保存成功后输出结果如下 ...

  2. C语言编程>第二十三周 ③ 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入

    例题:下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序.插入法的基本算法是:先对字符串中的头两个元素进行排序:然后把第三字符插入到前两个字符中,插入后前三个字 ...

  3. C语言试题三十九之将s所指字符串中除了下标为奇数、同时ascii值也为奇数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。

    1. 题目 请编写一个函数function,它的功能是:将s所指字符串中除了下标为奇数.同时ascii值也为奇数的字符外,其余的全都删除:串中剩余字符所形成的一个新串放在t所指的一个数组中. 2 .温 ...

  4. C语言试题三十八之将s所指字符串中除了下标为偶数、同时ascii值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。

    1. 题目 请编写一个函数function,它的功能是:将s所指字符串中除了下标为偶数.同时ascii值也为偶数的字符外,其余的全都删除:串中剩余字符所形成的一个新串放在t所指的一个数组中. 2 .温 ...

  5. C 二级 函数fun的功能是:将s所指字符串中除了下标为偶数、 同时ASCII值也为偶数的字符外, 其余的全都删除;

    函数fun的功能是:将s所指字符串中除了下标为偶数. 同时ASCII值也为偶数的字符外, 其余的全都删除; 串中剩余字符所形成的一个新串放在所指的数组中. 例如,若s所指字符串中的内容为: " ...

  6. 编程. 已知字符串:this is a test of java. 按要求执行以下操作: (1) 统计该字符串中字母s出现的次数 (2) 取出子字符串test (3) 用多种方式将本字

    package Char_String;import com.sun.xml.internal.ws.util.StringUtils;import java.util.Arrays;/** * Cr ...

  7. 【HTML】处理<br>换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决

    [HTML]处理 换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决 参考文章: (1)[HTML]处理 换行符 ...

  8. 获取字符串中的.前面的长度_算法连载之求解不含有重复字符的最长子串长度...

    问题 给定一个字符串,找出其中不含有重复字符的最长子串长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc" ...

  9. 判断字符串中是否具有唯一字符

    任务描述: 给出一个字符串(可能为空字符串) 输出检测的字符串及其长度 空字符串是唯一的 检测顺序为自左向右 输出该字符串中的字符是否唯一,若不唯一指出相同的字符及其在字符串中的位置,并显示其十六进制 ...

  10. 字符与字符串中的‘\0‘, ‘0‘, 0;strlen()函数求字符串长度计算方法(sizeof()验证)

    先问一个问题:如下字符串or字符数组,用strlen函数求长度各是多少? /*01*/char * str1 = "abc"; /*02*/char * str2 = " ...

最新文章

  1. iOS9中如何在日历App中创建一个任意时间之前开始的提醒(一)
  2. php中的__autoload()函数
  3. 加载JavaScript文件时nginx报::ERR_CONTENT_LENGTH_MISMATCH错误解决
  4. RunTime.getRunTime().addShutdownHook的用法
  5. java 对象流_java 对象流的简单使用
  6. STM32 - CubeMX 的使用实例详细(04.1)- STM32F103的 - 定时器设定详细解释 - PWM波的产生 - 频率占空比的设定 - 软件代码分析
  7. Python版快速排序算法
  8. 工作展望简短_元旦祝福语大全简短
  9. linux python 升级脚本,Linux环境下python2.7.6升级python3.5.2
  10. 开通博客,记录一下。
  11. csgo手机上看demo_csgo看demo所有指令 怎么看demo所有指令呢?
  12. 腾讯Tendis 号称能干掉 Redis ?你继续吹牛吧 !
  13. 大数据分析应用于政府的12个案例
  14. 2019携程校招笔试题选讲
  15. 用Python 统计、分析2020年江苏省事业单位招聘岗位 Excel 表格信息
  16. 计算机技能大赛简讯内,【报道】2010学西城区职业高中计算机排版技能竞赛简讯...
  17. 蓝桥杯单片机第七届省赛-模拟风扇控制系统
  18. 一次性餐具 disposable dishware
  19. win10系统下,KMSpico安装过程中出现“无法完成操作,因为文件包含病毒或潜在的垃圾软件”
  20. MATLAB Handle类的set和get方法

热门文章

  1. linux 内核源码
  2. android蓝牙错误码8,如何解决BluetoothGatt:Android中发生android.os.DeadObjectException错误?...
  3. android文档导航条跳来跳去,莫名其妙的Android导航栏
  4. EWM仓库和非EWM仓库之间的库存转移311
  5. mac本地安装的jenkins忘记管理员密码
  6. Sourceinsight超好看护眼的配色方案!!!每一步都有步骤
  7. 山东大学暑期项目实训-基于信用评分卡算法模型的个人信用评级系统的设计与实现-第二周-6(7月9日
  8. 【引用】益和VA走出国门,中新企业交易会硕果累出
  9. SQLServer学习笔记八:多表连接查询
  10. 西北工业大学计算机专业课考什么,总算懂了今年西北工业大学计算机考研详情...