题目描述

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

给定一个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,String)的更多相关文章

  1. 第七届(16年)蓝桥杯java B组决赛真题 愤怒的小鸟 解题思路

    愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车,然后返回去撞 ...

  2. 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路

    这篇文章主要是介绍下C题的解题思路,首先我们对这道C题进行一个整体的概括,结构如下: C题:经济类 第一问:发现危险人群. 发现:欺诈的方式开始.雇佣或浪漫的承诺. 数据→确定特定的经济萧条地区→确定 ...

  3. 剑指offer部分编程题

    一 斐波那契数列 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 问题分析: 可以肯定的是这一题通过递归的方式是肯定能做出来,但是这样会有 ...

  4. 阿里聚安全攻防挑战赛第三题Android PwnMe解题思路

    阿里聚安全攻防挑战赛第三题Android PwnMe解题思路 大家在聚安全挑战赛正式赛第三题中,遇到android app 远程控制的题目.我们今天带你一探究竟,如何攻破这道题目. 一.题目 购物应用 ...

  5. 2019年美国大学生数学建模竞赛(MCM/ICM) E题解题思路

    这也许是我大学生涯最后一次参加数学建模比赛了吧,这次我们选择的问题是E题,以下是我们解题时候的一些思路.很多不易体现的项目产生对环境造成影响的指标可以由一些等同类型的指标来代替,如土地.森林植被被破环 ...

  6. pta 编程题14 Huffman Codes

    其它pta数据结构编程题请参见:pta 题目 题目给出一组字母和每个字母的频数,因为哈夫曼编码不唯一,然后给出几组编码,因为哈夫曼编码不唯一,所以让你判断这些编码是否符合是哈夫曼编码的一种. 解题思路 ...

  7. FCC编程题之中级算法篇(下)

    介绍 本篇是"FCC编程题之中级算法篇"系列的最后一篇 这期完结后,下期开始写高级算法,每篇一题 目录 1. Smallest Common Multiple 2. Finders ...

  8. C算法编程题(六)串的处理

    前言 上一篇<C算法编程题(五)“E”的变换> 连续写了几篇有关图形输出的编程题,今天说下有关字符串的处理. 程序描述 在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求 ...

  9. C算法编程题(四)上三角

    前言 上一篇<C算法编程题(三)画表格> 上几篇说的都是根据要求输出一些字符.图案等,今天就再说一个“上三角”,有点类似于第二篇说的正螺旋,输出的字符少了,但是逻辑稍微复杂了点. 程序描述 ...

随机推荐

  1. [leetcode]914. X of a Kind in a Deck of Cards (easy)

    原题 题目原意可转换为 两组有大于等于2的公因数 /** * @param {number[]} deck * @return {boolean} */ var hasGroupsSizeX = fu ...

  2. AQS初体验

    AQS初体验 AQS是AbstractQueuedSynchronizer的简称.AQS提供了一种实现阻塞锁和一系列依赖FIFO等待队列的同步器的框架.所谓框架,AQS使用了模板方法的设计模式,为我们 ...

  3. 六、SQL 多张表数据叠加到一个视图里面

    1 create view vABC as select * from a,b,c where a.id = b.aid and b.id = c.bid ---------------------- ...

  4. mybatis-Generator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap

    原因: 如果不把之前已经生成的xxxMapper.xml删除掉,再次生成代码时,会附加上去! 运行项目就回报上面的错误. 所以在运行代码生成之前,要把以前已经生成的xml文件清掉,以妨出错.

  5. Codeforces1144B(B题)Parity Alternated Deletions

    B. Parity Alternated Deletions Polycarp has an array aa consisting of nn integers. He wants to play ...

  6. 异常处理 _this.setData is not a function

    _this.setData is not a function;at api request success callback function TypeError: _this.setData is ...

  7. 金蝶K3 V12.2版本,中途启用双计量单位出现错误

    忘记修改虚仓库存/收料通知单的双计量数量

  8. [转]jQuery不同版本区别

    原文转载自csdn:http://blog.csdn.net/u010167032/article/details/23666145 了解不同版本之间的差异,与助于选择适合自己项目的版本. ⒈4重要新 ...

  9. 【Java】Class JavaLaunchHelper is implemented in both ** and **

    详细问题描述如下: objc[64179]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachin ...

  10. oracle实战(一)

    一.表空间的创建以及删除 声明:此操作环境为windows,oracle10G 表空间? ORACLE数据库的逻辑单元. 数据库---表空间 一个表空间可以与多个数据文件(物理结构)关联 一个数据库下 ...