补坑: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 处理多个 case
            String 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;
    }

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机提示找不到xinput1_3.dll怎么办?6个xinput1_3.dll丢失完美解决方案分享

xinput1_3.dll是Windows操作系统中的一个重要动态链接库文件&#xff0c;它负责处理游戏控制器和其他输入设备的相关功能。当计算机出现xinput1_3.dll缺失的问题时&#xff0c;可能会导致无法正常使用游戏控制器或其他输入设备。下面是针对这个问题的6个解决方法&#xff1a; 方…

物联网AI MicroPython学习之语法 uhashlib哈希算法

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; uhashlib 介绍 实现二进制数据散列算法&#xff0c;支持sha256&#xff0c;sha1&#xff0c;MD5。 接口介绍 sha256 - 创建一个SHA256哈希对象 参数原型&#xff1a;hash_obj uhashlib.sha256([bytes]) …

时序预测 | MATLAB实现WOA-CNN-GRU-Attention时间序列预测(SE注意力机制)

时序预测 | MATLAB实现WOA-CNN-GRU-Attention时间序列预测&#xff08;SE注意力机制&#xff09; 目录 时序预测 | MATLAB实现WOA-CNN-GRU-Attention时间序列预测&#xff08;SE注意力机制&#xff09;预测效果基本描述模型描述程序设计参考资料 预测效果 基本描述 1.MATLAB实现…

threejs(11)-shader着色器打造漫天飞舞孔明灯

src/main/main.js import * as THREE from "three";import { OrbitControls } from "three/examples/jsm/controls/OrbitControls"; import gsap from "gsap"; // 动画库 import vertexShader from "../shaders/flylight/vertex.glsl"…

类和对象(2):构造函数,析构函数

一、构造函数 1.1 概念 构造函数是一种特殊的成员函数&#xff0c;名字与类名相同&#xff0c;创建类类型对象时编译器自动调用——初始化对象&#xff0c;在对象整个生命周期内只调用一次。 PS: 1. 构造函数无返回值&#xff1b;2. 构造函数支持重载。 class Date { public:…

Image透明度点击简述以及Unity2019之后存在无法点击的BUG修复

前言 自Unity2019之后Unity将UGUI模块从内置库修改成了通过PackageManger引入的方式。Image就来源于com.unity.modules.imgui模块。其实代码大体代码跟2018是一致的&#xff0c;但是还是有些细微差别&#xff0c;Image透明度点击不命中就是2019之后才有的问题&#xff0c;2018…

提升中小企业效率的不可或缺的企业云盘网盘

相比之大型企业&#xff0c;中小型企业在挑选企业云盘工具更注重灵活性和成本。那么市面上有哪些企业云盘产品更适合中小企业呢&#xff1f; 说起中小企业不能错过的企业云盘网盘&#xff0c;Zoho Workdrive企业云盘绝对榜上有名&#xff01; Zoho Workdrive企业云盘为用户提…

打印图形

题目描述 由键盘输入一个大写字母 ( 到 中的任意一个 ) &#xff0c;输出如下图所示由相关大写字母组成的图形。 所输入的字母一定为输出文件的第一个字符( 位于图形的左上角 ) &#xff0c;其余部分的字母构成规律和分布由样例给出。 输入格式 一行&#xff0c;仅为一个大写…

JavaScript基础入门03

目录 1.条件语句 1.1if 语句 1.1.1基本语法格式 1.1.2练习案例 1.2三元表达式 1.3switch 2.循环语句 2.1while 循环 2.2continue 2.3break 2.4for 循环 3.数组 3.1创建数组 3.2获取数组元素 3.3新增数组元素 3.3.1. 通过修改 length 新增 3.3.2. 通过下标新增 …

3D渲染原理及朴素JavaScript实现【不使用WebGL】

在网页中显示图像和其他平面形状非常容易。 然而&#xff0c;当涉及到显示 3D 形状时&#xff0c;事情就变得不那么容易了&#xff0c;因为 3D 几何比 2D 几何更复杂。 为此&#xff0c;你可以使用专用技术和库&#xff0c;例如 WebGL 和 Three.js。 但是&#xff0c;如果你只…

链表OJ题(2)

目录 1.移除链表元素√ 2.反转链表 3.相交链表 4.链表的中间节点 5.链表中倒数第k个节点 6.合并链表√ 7.分割链表√ 今天链表面试OJ题目 移除链表元素反转链表相交链表链表的中间节点链表中倒数第k个节点合并链表分割链表 &#x1f642;起始条件 中间节点 结束条件&am…

111111111111111

全局锁 就是对整个数据库进行加锁&#xff0c;加锁之后整个数据库就处于只读状态&#xff0c;后续的DML写语句&#xff0c;DDL语句&#xff0c;以及对更新事务的提交操作都会被阻塞&#xff0c;典型地使用场景就是做整个数据库的逻辑备份&#xff0c;对所有的表进行锁定&#x…

动态内存管理(让内存管理更加灵活)

文章目录 概述一、动态内存开辟malloc 函数calloc 函数realloc 函数 二、动态内存释放三、动态内存可能会犯的错误 概述 我们平时在内存中开辟空间的方式有&#xff1a; int a 10;//在栈空间上开辟四个字节int arr[10] {0};//在栈空间上开辟10个字节的连续空间用以上方式开辟…

Clickhouse学习笔记(5)—— ClickHouse 副本

Data Replication | ClickHouse Docs 副本的目的主要是保障数据的高可用性&#xff0c;即使一台 ClickHouse 节点宕机&#xff0c;那么也可以从其他服务器获得相同的数据 注意&#xff1a; clickhouse副本机制的实现要基于zookeeperclickhouse的副本机制只适用于MergeTree f…

【每日一题】情侣牵手

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;并查集 写在最后 Tag 【并查集】【数组】【2023-11-11】 题目来源 765. 情侣牵手 题目解读 返回最少的交换座位的次数&#xff0c;使每对情侣可以坐在一起。 解题思路 方法一&#xff1a;并查集 对于一对情侣&…

跟着openai学编程

装饰者模式 class Component:def operator(self):passclass ConcreteComponent(Component):def operator(self):return "ConcreteComponent operator"class Decorator(Component):def __init__(self, component) -> None:super().__init__()self.component compo…

SDWAN(Software Defined Wide Area Network)概述与优势分析

文章目录 SDWAN简介SDWAN技术优势简化网络部署和维护安全传输灵活网络拓扑极致体验 SD-WAN关联技术STUNIPsec智能选路SaaS路径优化 典型组网多总部分支组网云管理组网 推荐阅读 SDWAN简介 SDWAN&#xff08;Software Defined Wide Area Network&#xff0c;软件定义广域网&…

Java自学第9课:JSP基础及内置对象

目录&#xff1a; 目录 1 JSP基础知识架构 1 指令标识 1 Page命令 2 Including指令 3 taglib指令 2 脚本标识 1 JSP表达式 2 声明标识 3 代码片段 3 JSP注释 1 HTML注释 2 带有JSP表达式的注释 3 隐藏注释 4 动态注释 4 动作标识 1 包含文件标识 2 请求转发标…

vscode 和 keil协同使用开发stm32程序,超详细教程

vscode 和 keil协同使用开发stm32程序 文章目录 vscode 和 keil协同使用开发stm32程序1. 安装vscode拓展安装chinese插件 2 .安装Mingw3.配置环境变量4. 打开Keil项目 VSCODE 是一款广受好评的代码编辑器&#xff0c; KEIL 是常用的嵌入式开发工具但编程界面简陋。 将两个工具…

【PyQt】(自制类)处理鼠标点击逻辑

写了个自认为还算不错的类&#xff0c;用于简化mousePressEvent、mouseMoveEvent和mouseReleaseEvent中的鼠标信息。 功能有以下几点&#xff1a; 鼠标当前状态&#xff0c;包括鼠标左/中/右键和单击/双击/抬起鼠标防抖(仅超出一定程度时才判断鼠标发生了移动)&#xff0c;灵…