补坑:Java的字符串String类(2):一些OJ题目

2023-11-11 22:52

本文主要是介绍补坑:Java的字符串String类(2):一些OJ题目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

有关String的方法可以看看我上一篇博客

补坑:Java的字符串String类(1)-CSDN博客

387. 字符串中的第一个唯一字符 - 力扣(LeetCode)

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。

示例 1:

输入: s = "leetcode"
输出: 0

示例 2:

输入: s = "loveleetcode"
输出: 2

示例 3:

输入: s = "aabb"
输出: -1

拿一个简单的字符串来梳理思路

1.我们申请一个计数数组count,每一个字符的背后其实是一个十进制的数字(ASCII码),比如a=97,b=98

2.ok接下来我们设置一个i遍历这个数组,每次遍历到一个字符就把当前遍历到相同字符的次数加入数组中

 3.再次遍历字符串的每个字符,如果在数组里面是1,那么就返回当前的数组下标

优化数组:我们可以不用按照ASCII码来申请这么大的数组,我们可以让当前字符ch-'a'

这样可以使字符串变成这样

最终的代码

    public int firstUniqChar(String s) {int[] count = new int[26];for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);count[ch-'a']++;}for (int i = 0; i < s.length(); i++) {char ch = s.charAt(i);if(count[ch-'a'] == 1){return i;}}return -1;}

字符串最后一个单词的长度_牛客题霸_牛客网 (nowcoder.com)

描述

计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)

输入描述:

输入一行,代表要计算的字符串,非空,长度小于5000。

输出描述:

输出一个整数,表示输入字符串最后一个单词的长度。

示例1

输入:

hello nowcoder

输出:

8

说明:

最后一个单词为nowcoder,长度为8

用库方法lastIndexOf找到最后一个空格的地方,然后用sunstring截取空格下一个字母所带的单词

然后打印就行了 

public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseString a = in.nextLine();int index = a.lastIndexOf(' ');String str = a.substring(index+1);System.out.println(str.length());}}
}

125. 验证回文串 - 力扣(LeetCode)

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 

示例 1:

输入: s = "A man, a plan, a canal: Panama"
输出:true
解释:"amanaplanacanalpanama" 是回文串。

示例 2:

输入:s = "race a car"
输出:false
解释:"raceacar" 不是回文串。

示例 3:

输入:s = " "
输出:true
解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。
由于空字符串正着反着读都一样,所以是回文串。

在第一个字母处设置一个i,在最后一个字母处设置一个j

i++往后遍历字符串,j--往前遍历字符串,每遍历一个就进行字符比较,相同就继续遍历

注意:i遇到非数字字符要++到下一个数字字符;

j遇到非数字字符要--到下一个数字字符

如果i和j下标的字符不一样就直接返回false

整个代码:

    public static boolean isNumOrCharacter(char ch){if(ch >= '0' && ch <= '9' || ch >= 'a' && ch <= 'z'){return true;}return false;}public boolean isPalindrome(String s) {s = s.toLowerCase();//定义i和j下标int i = 0;int j = s.length()-1;while(i < j){//i要一直走到一个合法的字符那里,而且为了防止i越界得多加一个i<j的前提while(i < j && !isNumOrCharacter(s.charAt(i))){i++;}//j要一直走到一个合法的字符那里,而且为了防止j越界得多加一个i<j的前提while(i < j && !isNumOrCharacter(s.charAt(j))){j--;}//对应下标字符一样,i++,j--if(s.charAt(i) == s.charAt(j)){i++;j--;}else{//对应下标不一样return false;}}return true;}

 

这篇关于补坑:Java的字符串String类(2):一些OJ题目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

Java中Integer128陷阱

《Java中Integer128陷阱》本文主要介绍了Java中Integer与int的区别及装箱拆箱机制,重点指出-128至127范围内的Integer值会复用缓存对象,导致==比较结果为true,下... 目录一、Integer和int的联系1.1 Integer和int的区别1.2 Integer和in

SpringSecurity整合redission序列化问题小结(最新整理)

《SpringSecurity整合redission序列化问题小结(最新整理)》文章详解SpringSecurity整合Redisson时的序列化问题,指出需排除官方Jackson依赖,通过自定义反序... 目录1. 前言2. Redission配置2.1 RedissonProperties2.2 Red

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与