LeetCode Top Interview Questions Easy Collections 总结二(String)

本文介绍了多种字符串操作的方法,包括字符串反转、查找唯一字符、判断是否构成相同、验证回文等,并详细解析了每种方法的实现思路。

Reverse String

Write a function that takes a string as input and returns the string reversed.

要求:反转字符串
分析:建立一个新字符串从末尾拼接

Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer.
Note:
Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

要求: 反转一个int, 若溢出则返回0
分析: 用sum = sum * 10 + num%10; num/= 10 这样的方法来承接到倒数一位, 因为int范围是2147483647 即MAX_INTEGER, 所以只需判断sum 和 214748364 即 MAX_INTEGER / 10的大小, 最后一位不用比的原因是 给定的int值第一位是不可能大于2的. 最后还要注意int为负数的情况, 需要提前提取出负号

First Unique Character in a String

Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1.
Note: You may assume the string contain only lowercase letters.

要求: 给定一个只有小写的字符串, 找出第一个没有重复的字符的下标, 若没有返回-1
分析: 建立char数组,长度最大字符的种类, 遍历字符串, 找到一个就char[index]++. 之后再遍历一次, 找到第一个char[index]即可

Valid Anagram

Given two strings s and t, write a function to determine if t is an anagram of s.

For example,
s = “anagram”, t = “nagaram”, return true.
s = “rat”, t = “car”, return false.

Note:
You may assume the string contains only lowercase alphabets.

要求: 判断s和t是否组成相同(但是内部字符的顺序不同)
分析:hashmap存入字符和个数, 然后再remove 看最后是否为空

Valid Palindrome

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
“A man, a plan, a canal: Panama” is a palindrome.
“race a car” is not a palindrome.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

要求: 判断给定的string是否为回文
分析: 首先看例子, 需要排除句子内部除了字母外的所有字符, 再进行对比无视大小写, 另外空字符串也是符合题意的

String to Integer (atoi)

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

要求: 转换string为integer
分析: 巨坑的一道题, 首先要判断输入的这个数字是否合法! 开头不是+, -或者数字就非法, 而且要是有+, 或者-也只能有1个,之后才进行读取数字, 读到不是数字为止. 另外若开头为0, 注意忽略.

Implement strStr().

Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Example 1:

Input: haystack = “hello”, needle = “ll”
Output: 2

要求: 返回needle再haystack中第一次出现时的下标 若没有 返回-1
分析: Sting的indexof方法, 或者自己写一个indexof方法

Count and Say

The count-and-say sequence is the sequence of integers with the first five terms as following:

  1. 1
  2. 11
  3. 21
  4. 1211
  5. 111221
    1 is read off as “one 1” or 11.
    11 is read off as “two 1s” or 21.
    21 is read off as “one 2, then one 1” or 1211.
    Given an integer n, generate the nth term of the count-and-say sequence.

Note: Each term of the sequence of integers will be represented as a string.

要求: 下一行读前一行, 输出第N行的数字
分析: 就是如题所示, 找上一行的数, 然后计数来得到这一行的数, 注意点是用stringbuilder来减少运行时间

Longest Common Prefix

Write a function to find the longest common prefix string amongst an array of strings.

要求: 找string数组中, 最长的前缀
分析: 长度1以内直接返回, 之后先比对0和1得到一个公共前缀, 之后拿这个前缀和之后的每一个比, 这个前缀会慢慢缩小,直到这个前缀长度为0 或者比完, 返回这个前缀, 同样要注意用stringbuilder

### Java社会招聘常见面试问题及答案 #### 1. JDK版本差异 JDK 1.7 和 JDK 1.8 的 HashMap 数据结构存在显著区别。在 JDK 1.7 中,`HashMap` 使用的是 **数组+链表** 结构;而在 JDK 1.8 中,则引入了更高效的实现方式——当链表长度超过一定阈值时,会自动转换为 **红黑树** 来优化性能[^3]。 ```java // JDK 1.8 HashMap 插入元素示例 Map<String, String> map = new HashMap<>(); map.put("key", "value"); ``` --- #### 2. Dubbo框架的核心概念 Dubbo 是一款高性能的分布式服务治理框架,在实际开发中被广泛应用于微服务架构下。其核心功能包括注册中心、负载均衡以及远程调用机制等。以下是几个常见的 Dubbo 面试题: - 注册中心的作用是什么? - 如何配置负载均衡策略? - RPC 调用的具体流程有哪些? 这些知识点通常会在一线互联网公司的技术面试点到[^4]。 --- #### 3. MyBatis 工作原理 MyBatis 是一种持久层框架,它支持定制化 SQL 查询语句并提供映射关系管理的功能。对于 MyBatis 的考察重点在于以下几个方面: - Mapper 文件如何解析? - 动态 SQL 实现的方式有哪些? - 缓存机制分为哪几类? 掌握这些问题有助于更好地理解数据库操作逻辑及其内部运行机理。 --- #### 4. Redis 应用场景分析 Redis 不仅是一个简单的键值存储系统,还具备多种高级特性如发布订阅模式、事务处理能力等。因此关于 Redis 的讨论往往围绕以下主题展开: - 主从复制的工作原理; - AOF 和 RDB 持久化的优缺点对比; - Cluster 架构设计思路。 了解上述内容可以帮助候选人应对复杂缓存需求下的解决方案设计挑战。 --- #### 5. 网络基础理论复习 网络编程也是 Java 开发者必备技能之一,特别是在涉及高并发请求或者跨平台通信时尤为重要。典型题目如下所示: - TCP三次握手过程描述; - HTTP/HTTPS 协议的区别在哪里; - NIO vs BIO 性能特点比较。 熟悉这些基础知识能够增强求职者的竞争力水平[^2]。 --- #### 6. Linux命令行技巧总结 作为后台工程师来说,熟练运用 Shell 脚本编写能力和常用工具非常重要。下面列举了一些可能会遇到的相关询问事项: - 查看当前目录文件列表的方法; - 监控 CPU 或内存占用情况指令; - 解压 tar.gz 类型压缩包的操作步骤。 以上每一点都需要通过实践积累经验才能做到游刃有余地解答。 --- #### 7. MQ消息队列选型依据 目前主流的消息中间件产品主要包括 RabbitMQ、Kafka 及 ActiveMQ 等选项。针对它们之间的异同点进行深入探讨是非常有价值的环节之一。具体可以从以下几个维度切入考虑: - 吞吐量表现评估标准; - 容错恢复机制保障措施; - 扩展性强弱程度判断准则。 此类话题经常出现在资深岗位筛选过程中。 --- #### 8. Zookeeper集群协调作用说明 Zookeeper 提供了一套简单易用却极其强大的分布式同步原语集合体,适用于各种复杂的业务场景之中。例如选举 Leader 角色分配任务等功能均依赖于此组件完成。故而有必要弄清楚下列要点所在之处: - Watcher 机制运作细节阐述; - Session 过期时间设定原则解释; - DataTree 层次结构展示形式介绍。 只有真正掌握了背后的算法思想才可以从容面对考官提问。 --- #### 9. Netty高效网络库剖析 Netty 是一个基于 NIO 的客户端服务器端程序框架,用于快速开发可维护的网络应用。有关它的考核方向大致集中在以下几个层面之上: - ChannelPipeline 流程控制图解; - Bootstrap 初始化参数设置指南; - Handler 方法执行顺序安排规律。 这些都是构建稳定可靠通讯协议栈所必需的知识储备项。 --- #### 10. 大数据生态体系概览 随着大数据时代的到来,越来越多的企业开始重视数据分析挖掘潜力释放的价值创造意义。于是乎 Hadoop、Spark 等开源项目的普及率逐年攀升。相应地也会衍生出一系列针对性较强的技术问答机会比如但不限于: - MapReduce 计算模型适用范围界定; - Shuffle & Sort 关键阶段解读; - YARN 资源调度器优势体现。 这类综合性较强的命题更能反映出应聘人员整体素质高低层次差别来。 --- #### 11. 经典算法题回顾练习 最后不得不提的就是各类经典算法问题啦!无论是字符串匹配还是动态规划亦或是贪心策略等等都是不可或缺的重要组成部分哦~ 下面给出部分例子仅供参考学习之用哈~ - LeetCode Top Interview Questions Easy Section; - 剑指 Offer Series Problem Collections. 持续刷题巩固记忆效果最佳哟😊[^1] ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值