编程题及解题思路(1,String)
题目描述
请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
给定一个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)的更多相关文章
- 第七届(16年)蓝桥杯java B组决赛真题 愤怒的小鸟 解题思路
愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车,然后返回去撞 ...
- 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路
这篇文章主要是介绍下C题的解题思路,首先我们对这道C题进行一个整体的概括,结构如下: C题:经济类 第一问:发现危险人群. 发现:欺诈的方式开始.雇佣或浪漫的承诺. 数据→确定特定的经济萧条地区→确定 ...
- 剑指offer部分编程题
一 斐波那契数列 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 问题分析: 可以肯定的是这一题通过递归的方式是肯定能做出来,但是这样会有 ...
- 阿里聚安全攻防挑战赛第三题Android PwnMe解题思路
阿里聚安全攻防挑战赛第三题Android PwnMe解题思路 大家在聚安全挑战赛正式赛第三题中,遇到android app 远程控制的题目.我们今天带你一探究竟,如何攻破这道题目. 一.题目 购物应用 ...
- 2019年美国大学生数学建模竞赛(MCM/ICM) E题解题思路
这也许是我大学生涯最后一次参加数学建模比赛了吧,这次我们选择的问题是E题,以下是我们解题时候的一些思路.很多不易体现的项目产生对环境造成影响的指标可以由一些等同类型的指标来代替,如土地.森林植被被破环 ...
- pta 编程题14 Huffman Codes
其它pta数据结构编程题请参见:pta 题目 题目给出一组字母和每个字母的频数,因为哈夫曼编码不唯一,然后给出几组编码,因为哈夫曼编码不唯一,所以让你判断这些编码是否符合是哈夫曼编码的一种. 解题思路 ...
- FCC编程题之中级算法篇(下)
介绍 本篇是"FCC编程题之中级算法篇"系列的最后一篇 这期完结后,下期开始写高级算法,每篇一题 目录 1. Smallest Common Multiple 2. Finders ...
- C算法编程题(六)串的处理
前言 上一篇<C算法编程题(五)“E”的变换> 连续写了几篇有关图形输出的编程题,今天说下有关字符串的处理. 程序描述 在实际的开发工作中,对字符串的处理是最常见的编程任务.本题目即是要求 ...
- C算法编程题(四)上三角
前言 上一篇<C算法编程题(三)画表格> 上几篇说的都是根据要求输出一些字符.图案等,今天就再说一个“上三角”,有点类似于第二篇说的正螺旋,输出的字符少了,但是逻辑稍微复杂了点. 程序描述 ...
随机推荐
- spring全局异常抓取validation校验信息
@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler({Exception.class}) @Respons ...
- 微信小程序post 服务端无法获得参数问题
header中需要改为 "Content-Type": "application/x-www-form-urlencoded"
- 如何在 Centos7 中使用阿里云的yum源
如何在 Centos7 中使用阿里云的yum源 1. 备份原来的yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Ba ...
- Jenkins-slave分布式环境构建与并行WebUi自动化测试项目
前言 之前搭建过selenium grid的分布式环境,今天我们再来搭建一次Jenkins的分布式环境:jenkins-slave Jenkins的Master-Slave分布式架构主要是为了解决Je ...
- Ubuntu 16.04 LTS设置屏幕分辨率并永久保存所设置的分辨率
一.问题: 1.新装完Ubuntu 16.04 LTS后,进入系统打开命令行窗口,界面的分辨率显示是最小的: 2.进入System settings-->Displays 设置屏幕分辨率 显示& ...
- Web容器启动中执行某个Java类
1.监听(Listener) <!-- 配置监听 --> <listener> <listener-class>com.xian.jdbc.GetPropertie ...
- 自定义SWT控件二之自定义多选下拉框
2.自定义下拉多选框 package com.view.control.select; import java.util.ArrayList; import java.util.HashMap; im ...
- jenkins未授权访问漏洞
jenkins未授权访问漏洞 一.漏洞描述 未授权访问管理控制台,可以通过脚本命令行执行系统命令.通过该漏洞,可以后台管理服务,通过脚本命令行功能执行系统命令,如反弹shell,wget写webshe ...
- Dubbo源码学习之-服务导出
前言 忙的时候,会埋怨学习的时间太少,缺少个人的空间,于是会争分夺秒的工作.学习.而一旦繁忙的时候过去,有时间了之后,整个人又会不自觉的陷入一种懒散的状态中,时间也显得不那么重要了,随便就可以浪费掉几 ...
- S2:log4j
配置步骤 1.引入jar,放到lib中,jar包被项目管理 2.在src目录下copy了一个文件log4j.properties 3.使用Logger String word="会员登记 ...