【算法题001】面试题 01.01. 判定字符是否唯一

news2024/11/24 10:43:08

题目来源:《程序员面试金典(第 6 版)》

1、Problem: 面试题 01.01. 判定字符是否唯一

文章目录

  • 面试题 01.01. 判定字符是否唯一
    • 一、题目描述
    • 二、解决方案
      • (一)方案一
          • 1、解题思路
          • 2、解题方法
          • 3、复杂度
          • 4、代码实现
      • (二)方案二
          • 1、思路
          • 2、解题方法
          • 3、复杂度
          • 4、Code
    • 三、测试验证

面试题 01.01. 判定字符是否唯一

一、题目描述

在这里插入图片描述

二、解决方案

(一)方案一

1、解题思路
  1. 第一轮遍历:从第一个字符开始,依次与后面的所有字符作比较。如果存在相同就直接返回false,退出循环;如果不存在相同,则继续进行第二轮遍历。
  2. 第二轮遍历:从第二个字符开始,依次与后面的所有字符作比较。
  3. 第三轮遍历:从第三个字符开始,依次与后面的所有字符作比较。
  4. 依次类推,直至完成第n-1轮遍历。
2、解题方法

使用双重循环进行遍历求解。

3、复杂度
  • 时间复杂度: O ( n 2 ) O(n^2) O(n2)

  • 空间复杂度: O ( n ) O(n) O(n)

4、代码实现
class Solution {
    public boolean isUnique(String astr) {
        for(int i=0; i<astr.length()-1; i++) {
            char ch = astr.charAt(i);
            for(int j=i+1; j<astr.length(); j++) {
                if(ch == astr.charAt(j)) {
                    return false;
                }
            }
        }
        return true;
    }
}

(二)方案二

1、思路

使用 HashMap 来存放字符,并统计字符个数,当字符个数大于1时,表示存在字符重复,直接返回 false。当遍历完字符串中所有的字符后,仍没有重复字符出现,则返回 true。

2、解题方法

使用 HashMap 来存放字符并统计字符个数。

3、复杂度
  • 时间复杂度: O ( n ) O(n) O(n)

  • 空间复杂度: O ( n ) O(n) O(n)

4、Code
class Solution {
    public boolean isUnique(String astr) {
        Map<Character, Integer> map = new HashMap();
        for(int i=0; i<astr.length(); i++) {
            char ch = astr.charAt(i);
            if(map.get(ch) == null || map.get(ch) == 0) {
                map.put(ch, 1);
            } else {
                map.put(ch, map.get(ch)+1);
            }
            if(map.get(ch) > 1) {
                return false;
            }
        }
        return true;
    }
}

三、测试验证

方案一:
在这里插入图片描述

方案二:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/630617.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二本4年Java经验,大佬五面阿里(定薪45K)

前段时间刚面试上岸&#xff0c;先后面试了各大小公司&#xff0c;拿了一些 offer&#xff0c;有阿里&#xff0c;滴滴&#xff0c;快手&#xff0c;达达&#xff0c;得物等公司。面试的公司大部分都能过&#xff0c;所以这里给大家分享下自己的经验&#xff0c;也给自己做个归…

地震勘探基础(十二)之地震偏移处理

地震偏移处理 地震数据常规处理主要包括地震反褶积&#xff0c;水平叠加和地震偏移成像三大类。地震反褶积通过压缩地震子波提高地震分辨率&#xff0c;水平叠加的目的是提高信噪比&#xff0c;地震偏移成像的目的是提高地震空间分辨率和地震保真度。 在20世纪50年代&#xf…

【1】Midjourney新手必读

Midjourney官网网站&#xff1a;https://www.midjourney.com/ 问题一&#xff1a;Midjourney是什么 Midjourney 是 AI 生成算图工具&#xff0c;输入文字就会自动产生图像&#xff0c;目前架设在Discord频道上。 问题二&#xff1a;Discord频道是什么 Discord是国外的一个社…

Matlab快速入门——数组

学习目标&#xff1a;学习关于数组的详细知识&#xff08;喜欢的别忘记点赞收藏呦&#xff09; clear all; A[] %空数组 B[5 6 5 4 1] %行向量 C[5,5,5,4,4] %行向量 D[3;3;3;3;5] %列向量 EC %对行向量转置得到列向量 clear all…

实验篇(7.2) 09. 通过安全隧道走对方宽带上网 (FortiClient-IPsec) ❀ 远程访问

【简介】要想所有的流量都走安全隧道&#xff0c;就需要禁用隧道分割。这样上网流量也会通过隧道到达远端防火墙&#xff0c;再通过远端防火墙的宽带接口去到互联网。我们来看看FortiClient客户端用IPsec VPN是如何实现的。 实验要求与环境 OldMei集团深圳总部防火墙有两条宽带…

006:vue中el-tree 添加右键菜单的方法

第006个 查看专栏目录: 按照VUE知识点 ------ 按照element UI知识点 echarts&#xff0c;openlayers&#xff0c;cesium&#xff0c;leaflet&#xff0c;mapbox&#xff0c;d3&#xff0c;canvas 免费交流社区 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏…

document.URL与document.documentURI

document.URL与document.documentURI document.URL document.URL 返回当前文档的 URL 地址 该属性的值和DOM Level 0 中的document.location.href 属性的值是相等的。然而 document.location.href 是可写的&#xff0c;document.URL 是只读的。 document.documentURI 也返回…

【Linux】动态库与静态库,如何打包库,如何使用第三方库

文章目录 回顾基础学会打包自己的库并使用静态库打包库第三方库的使用 动态库打包库第三方库的使用 动态库加载以及周边问题 回顾基础 这篇文章主要对动静态库进行进一步的学习&#xff0c;关于动静态库的一些基础知识&#xff0c;请点击这篇文章的链接&#xff1a;【Linux】初…

【Docker】如何实现Docker 命令自动补全

前言 Docker 命令可以使用 tab 键补全。在命令行输入 Docker 命令时&#xff0c;只需输入前几个字符&#xff0c;然后按 Tab 键即可自动补全为正确的命令或参数。 例如&#xff0c;在命令行输入 docker r&#xff0c;然后按 Tab 键&#xff0c;就会自动补全为 docker run 命令…

YOLOv7训练自定义数据集

使用YOLOv7做对比实验&#xff0c;需要重新部署一下YOLO环境&#xff0c;并将COCO格式数据集转换为YOLO格式 博主的COCO数据集是由WiderPerson数据集转换来的&#xff0c;并且做了一些处理。 环境 Ubuntu18.0 CUDA11.2 NVIDIA T4 项目部署 下载项目&#xff1a; git clone…

SSM-Spring+SpringMVC+MyBatis框架的水果商城网站

项目介绍 主要功能&#xff1a; 前端用户购物端&#xff1a; ①角色信息&#xff1a;用户注册、用户登录、个人中心 ②个人中心&#xff1a;基本信息、我的订单、商品收藏、修改密码 ③首页管理&#xff1a;公告、留言、折扣大促销、热门商品 ④商品详情&#xff1a;收藏、加入…

基于Fragstats做土地利用景观格局分析详细流程

随城市化进程加快&#xff0c;城市经济迅速发展&#xff0c;城市面积不断向外扩展&#xff0c;景观空间组分不断发生变化&#xff0c;主要表现为&#xff1a;生态斑块支离破碎&#xff0c;生物多样性降低&#xff0c;原始的乡村田野景观被现代化建设用地取代&#xff1b;交通网…

数据结构与算法之树结构

目录 为什么要使用树结构树结构基本概念树的种类树的存储与表示常见的一些树的应用场景为什么要使用树结构 线性结构中不论是数组还是链表,他们都存在着诟病;比如查找某个数必须从头开始查,消耗较多的时间。使用树结构,在插入和查找的性能上相对都会比线性结构要好 树结构…

POSTGRESQL NEON - Serverless 式的POSTGRESQL 数据库的独特技能 分支数据

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

客户与企业:一场关于体验定义的拉锯战

Guofu 第 98⭐️ 篇原创文章分享 &#xff08;点击&#x1f446;&#x1f3fb;上方卡片关注我&#xff0c;加⭐️星标⭐️~&#xff09; 谈及客户体验的定义&#xff0c;我觉得暂时我的思考并不足以给出如此大框架的概念&#xff0c;本着以此抛砖引玉&#xff0c;和大家分享一下…

从广东电信故障看雪崩

本文几乎与此次故障无关&#xff0c;它只是写本文的缘起。 周五早上发一则朋友圈&#xff0c;呼应一下周四下午广东电信的故障&#xff1a; 我在第一时间(2 点 15 左右)发觉问题&#xff0c;随后我怀疑欠费&#xff0c;马上充值 200 块&#xff0c;未恢复&#xff0c;再次充值…

React diff的原理是什么

一、是什么 跟Vue一致&#xff0c;React通过引入Virtual DOM的概念&#xff0c;极大地避免无效的Dom操作&#xff0c;使我们的页面的构建效率提到了极大的提升 而diff算法就是更高效地通过对比新旧Virtual DOM来找出真正的Dom变化之处 传统diff算法通过循环递归对节点进行依…

【JavaEE】使Cookie与Session失效-表白墙退出登录操作-Servlet上传文件操作-表白墙注册上传头像+登录显示头像功能

表白墙退出登录操作-表白墙注册上传头像登录显示头像功能 文章目录 【JavaEE】使Cookie与Session失效-表白墙退出登录操作-Servlet上传文件操作-表白墙注册上传头像登录显示头像功能1. Cookie与Session的删除1.1 表白墙页面增加登录出口1.2 点击链接退出登录1.3 测试 2. 上传文…

最新版的配音软件--- tts-vue 软件 下载安装成功过程

目录 本次软件是 Loker 制作&#xff0c;感谢作者的无私奉献。 软件视频效果 软件图片效果 1&#xff1a;电脑版的tts-vue 软件下载链接以及说明&#xff1a; 2&#xff1a;tts-vue 网站在线转换链接&#xff1a; 3&#xff1a;tts-vue 软件 功能简介 截至最新版本&#…

如何根据波特率计算设备每秒传输多少字符

前言 &#xff08;1&#xff09;微机原理要进行期末考试了&#xff0c;要准备“预习”了。今天看到关于波特率和字符传输的知识&#xff0c;感觉这个在实际项目中可能会使用到。 &#xff08;2&#xff09;因为之前我在学习韦东山老师的课程的时候&#xff0c;他通过波特率计算…