题目描述

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。

给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。

测试样例:
"aeiou"
返回:True
"BarackObama"
返回:False
import java.util.*;

public class Different {
public boolean checkDifferent(String iniString) {
// write code here
for (int l = 0; l < iniString.length(); l++) {
for (int i = iniString.length()-1; i > l; i--) {
// System.out.print(iniString.charAt(0));
// System.out.print(iniString.charAt(i));
if (iniString.charAt(l) == iniString.charAt(i)) {
return false;
}
}
}
return true;
}
}

个人解题思路

题意是字符串中只要有重复的就返回false,重复就意味着有比较,

这里采用双重for循环,定义两个点一个从前往后一个从后往前,将所有的都比较一遍后将结果返回,若是有相等则直接返回false。

效率:(运行时间23ms 占用内存9680k)

public static boolean checkDifferent2(String iniString) {
HashSet<Character> hashSet = new HashSet<Character>();
char[] charArray = iniString.toCharArray();
for(char ch:charArray) {
hashSet.add(ch);
}
if(hashSet.size()==charArray.length) {
return true;
}
return false;
}

通过set集合实现,利用set的不重复性

将String中每一个char字符存入set集合中比较set集合与char集合的长度,相等就说明无重

效率:(运行时间:44ms 占用内存11348k)

暂时想到这两种解题思路,如果有效率更高的欢迎交流,注:效率由牛客网提供的,多测了几次不是特别准确,时间复杂度空间复杂度菜鸟猪还没弄明白。

刚刚又想到一种补充下使用字符串的 indexOf()和lastIndexOf()

上代码

public static boolean checkDifferent4(String iniString) {

        for (int i = 0; i < iniString.length(); i++) {
if(iniString.lastIndexOf(iniString.charAt(i))!=i) {
return false;
}
}
return true;
}

解题思路是这样的

通过循环用lastIndexOf()方法返回该元素最后一次出现的下标(猪从前往后循环的所以用最后一次出现的位置)与当前元素的下标做比较,如果不相同不用继续了,说明肯定有重复的

之前没想到indexof()方法。

效率:(运行时间:23ms 占用内存9676k)

这是这道题的三种思路,欢迎补充!转载请说明地址,谢谢!

最新文章

  1. cacti web页面访问 settings出错
  2. SDAutolayout图片大小根据数量变化
  3. Debian普通用户添加sudo权限
  4. java书箱
  5. 今天考试的JAVA编程题
  6. 串口调试工具(Python2.7+pyserial+Tkinter)
  7. Android长方形图片生成正圆形,以及矩形图片生成圆角
  8. mongoose的用法(注:连接数据库)
  9. OWC11生成统计图案例
  10. div垂直居中(js)
  11. Python cmd库的简易使用
  12. jsp (二) 练习
  13. Freemarker空值判断
  14. Vijos 1308 埃及分数 - 迭代加深
  15. Sequentially-consistent ordering
  16. rtpproxy 配置
  17. MVC上传(单文件)
  18. CC150相关问题
  19. tp请求和响应
  20. [C++] c language 23 keywords

热门文章

  1. 个人永久性免费-Excel催化剂功能第41波-文件文件夹相关函数
  2. C#5.0新增功能01 异步编程
  3. 学习16内容# 1.自定义模块 # 2.time # 3.datetime # 4.random
  4. Java的几种创建实例方法的性能对比
  5. Spark 源码分析系列
  6. LeetCode 解题目录
  7. SpringMVC简易架构图。。。
  8. el-upload自定义上传文件,并携带其余参数,且action不报错
  9. 【MySQL】服务无法启动(Mac)
  10. Kafka服务不可用(宕机)问题踩坑记