题目:

解一:由于题目忽略大小写,所以在获取字符串的同时用toLowerCase()方法将字符串的内容全部转成小写,再用toCharArray()方法将字符串转化成字符数组,用sort()方法对数组进行排序,for循坏对数组遍历,如果存在一个字符与下一个字符相等的话就输出no,布尔型a赋成false,如果遍历完不存在则输出yes。(注:遍历时上界为arr.length-1,不能为arr.length,避免报错)

解二:HashSet的特点是不允许存储重复元素,add()方法中:如果元素不存在于集合中:添加元素成功,返回true;如果已存在该元素,不添加元素(保证唯一性),返回false。

先获取字符串,设置布尔型IsUnique赋为true,将字符串用toCharArray()方法转成字符数组,利用增强for循坏遍历,如果元素重复出现,则add方法返回false,前面加上!(非)变为true进入if判断,布尔型为false,最后判断布尔型结果进行相应的输出。

解三:在Java中,Arrays.fill()是java.util.Arrays类提供的一组静态方法,用于将指定的值填充到数组的全部元素或指定范围的元素中,可以快速初始化数组或批量修改数组元素,避免手动循坏赋值的繁琐。例:创立一个数组长度为5,Arrays.fill(arr,10),则输出为【10,10,10,10,10】

在该解法中,创立一个数组,调用Arrays.fii()方法将数组内的元素全部初始化赋为0,再for循坏遍历字符串,刚开始时每个字符都是首次出现则进入else中将以该字符为下标的数组元素加一,如果有重复元素出现,则if判断arr[temp]==1为true进入输出no,如果遍历完没有重复元素出现,则输出yes。

解四:在java中,HashSet.contains(Object o)方法用于判断当前HashSet集合中是否包含指定元素,返回值为布尔类型。

该解法中,用HashSet存放出现过一次的字符,for循坏遍历获取的字符串,if语句判断set中是否已经存在了下标i对应的元素,若存在则是重复出现输出no,直接退出;没有出现的话,将该字符存到set中。最后遍历完没有重复元素则输出yes。

解五:获取字符串,创立HashMap,利用其“键-值对”解该题。for循坏遍历字符串,if语句判断如果map中已经存在该字符的话就将其对应的“值”加一,如果第一次出现的话就将该字符对应的“值”赋为0,把map里所有的“值”提取出来,存到一个collection集合里,如果该集合里存在“值”为1的话有重复出现的字符,输出no,否则为yes。

注:本人觉得该解法有一个漏洞,就是当重复的字符出现三次及以上的话,最后判断则不是为“1”,结果输出为yes。(蓝桥杯上测试用例全部通过,如有错误还请大佬多加指正)。例:

解六(自己的解法):获取字符串,设置hashmap:Character存放字符,Integer统计出现次数,遍历字符串,判断map是否存在该字符,存在的话将其对应的“值”加一;第一次出现的话则将其对应的“值”赋为1。如果没有重复出现的话,则map的大小与字符串的长度相等,进行判断相应输出。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐