JAVA利用方法实现四道题

        

目录

        

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

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

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

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

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

        4.统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。

        总结:


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

         1.首先,先定义一个数组,准备用来存放 外来字符串对象(引用是 s ),用来存储其中的 不同元素个数。

        

         为什么定义整型数组来接收?再看下面的代码:

        

        我们先遍历一遍外来的字符串 ,再通过 charAt方法 转换成字符,字符将会类似 ASCII 值,但更准确说是 Unicode 码值被隐式转换为整型作为 count 的下标来使用,因为 count 数组元素初始值默认是0,再通过 ++ 来计算当前的字符 有多少个一样的。 由于是遍历字符串,其他的字符同理。储存在不同 Unicode 码值 作为 count 数组的下标。

        2.接着,再通过遍历一次字符串,重头开始找到第一个只出现一次的字符,再返回下标,没有只出现一次的字符则返回-1.

        

         完整代码:

        

class Solution {public int firstUniqChar(String s) {int[] count = new int[300];for(int i=0;i < s.length();i++) {count[s.charAt(i)]++;}for(int i=0;i<s.length();i++) {if(1 == count[s.charAt(i)]) {return i;}}return -1;}
}

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

         首先利用 lastIndexof 方法,用于查找指定元素(可以是字符)在对象中的最后一次出现的位置索引(也是下标)。

        

        上述代码,我们先通过  lastIndexof 方法 找到最后一个出现的空格,返回的下标用 end 接收,substring 方法 是从指定的索引开始,截取到原字符串的末尾,返回一个新的字符串。所以用了新 引用 s2 接收,得到最后一个单词,最后打印最后一个单词长度就完成了。

        完整代码:

        

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while(sc.hasNextLine()) {String s = sc.nextLine();int end = s.lastIndexOf(" ");String s2 = s.substring(end + 1);System.out.println(s2.length());}}
}

        有循环输入是因为考虑到牛客网的输入需要就是循环。

        

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

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

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

       1. 首先,我们定义个方法来 判断 当前字符是否 符合 是字母 和 字符数字 。

        

        2. 再通过 toLowerCase 方法把大写字母变成小写的,再使用双指针方法来实现。

        

        双指针也就是 字符左右有两个 指针来指引。

        这里我们定义了 left 左指针,right 右指针。

        

        3. 再通过循环找到合法的字符,这里就使用到了刚开始我们创建的方法,用来找字母和数字字符。
                  4.最后,再判断左右两边字符是否一样,不一样肯定就不是回文串了,返回false,如果一样,则通过

else里的代码再来进行判断。

        完整代码;

        

class Solution {public static boolean isTrue(char c) {if(c >= 'a' && c <= 'z' || c >= '0' && c <= '9') {return true;}return false;}public boolean isPalindrome(String s) {s = s.toLowerCase();    int left = 0;int right = s.length() - 1;while(left < right) {while(left < right && !isTrue(s.charAt(left)) ) {left++;}while(left < right && !isTrue(s.charAt(right)) ) {right--;}if(s.charAt(left) != s.charAt(right)) {return false;}else {left++;right--;}}return true;}
}

         最后的返回 true 指 左右各自字符都通过判断了,左右两边字符都相等。

        

        4.统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。

         完整代码:

class Solution {public int countSegments(String s) {int count = 0;String[] s1 = s.split(" ");for(String s2:s1) {if (!s2.isEmpty()) {count++;}}return count;}
}

        首先,把外来的 引用给到 split 方法,可以将字符串按照指定的字符分割,传入的是空格,就会按照空格来分割字符串,最后它返回一个字符串数组,我们新建 s1 数组用来接收。

        前面也定义了个 变量count ,用来存储单词数。

        接着通过一个for 循环,isEmpty 用于判断一个字符串对象是否为空字符串,因为如果前面我们字符串有连续的空格,就会分割出两个空格之间的空字符串,所以要使用到 isEmpty 来判断count 是否要 ++,如果是为空字符串返回true,若字符串长度不为空,则返回 false  。

        最后返回的 count 这个字符串的 单词数。

        

        

        总结:

        这些题我们使用到的 方法:

        1. toLowerCase 方法,用于将字符进行大小写转换。

        2. charAt 方法,得到某个字符。

        3. lastIndexOf 方法,在字符串中查找指定字符最后一次出现的位置索引(下标)。

        4. substring 方法,从指定的索引(下标)开始,截取到原字符串的末尾,返回一个新的字符串。

        5. split 方法,用于指定按照何种模式(可以是字符)来分割字符串。该方法会根据指定的正则表达式(可以是字符)将原字符串分割成多个子字符串,并返回一个包含这些子字符串的数组。

        6. isEmpty 方法,用于判断一个字符串对象是否为空字符串。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【教程】Git 标准工作流

前言 Git 是日常开发中常用的版本控制工具&#xff0c;配合代码托管仓库&#xff08;如&#xff0c;Github&#xff0c;GitLab&#xff0c;Gitee 等&#xff09;用来实现多人多版本的协作开发。 但是 Git 的命令纷繁复杂&#xff0c;多如累卵&#xff0c;不可能也不需要全部搞…

基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发

在中医针灸的传统治疗中&#xff0c;穴位取穴的精确度对于治疗效果至关重要。然而&#xff0c;传统的定位方法&#xff0c;如体表标志法、骨度折量法和指寸法&#xff0c;由于观察角度、个体差异&#xff08;如人体姿态和皮肤纹理&#xff09;以及环境因素的干扰&#xff0c;往…

金融标准体系

目录 基本原则 标准体系结构图 标准明细表 金融标准体系下载地址 基本原则 需求引领、顶层设计。 坚持目标导向、问题导向、结果 导向有机统一&#xff0c;构建支撑适用、体系完善、科学合理的金融 标准体系。 全面系统、重点突出。 以金融业运用有效、保护有力、 管理高…

.NET 8 Web API 中的身份验证和授权

本次介绍分为3篇文章&#xff1a; 1&#xff1a;.Net 8 Web API CRUD 操作.Net 8 Web API CRUD 操作-CSDN博客 2&#xff1a;在 .Net 8 API 中实现 Entity Framework 的 Code First 方法https://blog.csdn.net/hefeng_aspnet/article/details/143229912 3&#xff1a;.NET …

Spring Boot 与 Vue 共铸卓越采购管理新平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

字符串统计(Python)

接收键盘任意录入&#xff0c;分别统计大小写字母、数字及其它字符数量&#xff0c;打印输出。 (笔记模板由python脚本于2024年11月02日 08:23:31创建&#xff0c;本篇笔记适合熟悉python字符串并懂得基本编程技法的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xf…

qt QScrollArea详解

1、概述 QScrollArea是Qt框架中的一个控件&#xff0c;它提供了一个可滚动的视图区域&#xff0c;用于显示超出视图大小的内容。这个控件非常有用&#xff0c;尤其是在处理大型表格、文本区域、图像集合或任何需要滚动浏览的内容时。QScrollArea本身不直接显示内容&#xff0c…

HTML 基础标签——元数据标签 <meta>

文章目录 1. `<meta>` 标签概述2. 属性详解2.1 `charset` 属性2.2 `name` 属性2.3 `content` 属性2.4 `http-equiv` 属性3. 其他常见属性小结在 HTML 文档中,元数据标签 <meta> 是一种重要的标签,用于提供关于文档的信息,这些信息不直接显示在网页内容中,但对于…

InnoDB: corruption in the InnoDB tablespace

磁盘空间满和断电都可能导致mysql无法启动&#xff0c;报错如下&#xff1a; InnoDB: corruption in the InnoDB tablespace. Please refer to InnoDB: http://dev.mysql.com/doc/refman/8.0/en/forcing-innodb-recovery.html InnoDB: about forcing recovery. 20241031 10:54:…

Java网络通信

前言 1. 基本知识 通俗一点就是CS就是要下载应用来访问的&#xff0c;BS是在浏览器上面访问的&#xff0c;不用下载 1.1 IP IP地址就是你电脑的主机号&#xff0c;一台设备都有唯一的IP&#xff0c;端口就是程序的唯一标识 这上面就是我们的ip地址了&#xff0c;有IPv4和…

iptables面试题

1、详述iptales工作流程以及规则过滤顺序&#xff1f; iptables过滤的规则顺序是由上至下&#xff0c;若出现相同的匹配规则则遵循由上至下的顺序 2、iptables的几个表以及每个表对应链的作用&#xff1f; Iptables有四表五链 Filter表 : Filter表是iptables中使用的默认表…

【论文笔记】Attention Prompting on Image for Large Vision-Language Models

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Attention Prompting on I…

【spring】Cookie和Session的设置与获取(@CookieValue()和@SessionAttribute())

&#x1f490;个人主页&#xff1a;初晴~ &#x1f4da;相关专栏&#xff1a;程序猿的春天 获取Cookie 使用 Servlet 获取Cookie&#xff1a; Spring MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;也是在 Servlet 的基础上实现的 RestController RequestMapping…

Android启动流程_Init阶段

前言 本文将会介绍 Android 启动流程&#xff0c;将基于 Android 10 代码逻辑介绍原生启动过程。 bootloader 上电 -> 加载 recovery 镜像或者 boot 镜像 -> linux kernel 启动 -> 加载 init 进程 -> 加载 zygote 进程 -> systemserver 进程 -> 系统启动 …

MySQL数据库之存储过程的创建与应用

存储过程 procedure 一.存储过程 作用&#xff1a;将经常使用的功能写成存储过程&#xff0c;方便后续重复使用。 二.创建存储过程 三.调用存储过程 call在计算机中是调用的意思 案例1&#xff1a;查看MySQL用户数 如上图所示&#xff0c;这是查看MySQL数据库中的user个数…

7.使用Redis进行秒杀优化

目录 1. 优化思路 总结之前实现的秒杀过程 下单流程 2. 使用Redis完成秒杀资格判断和库存 0. Redis中数据类型的选用 1.将优惠券信息保存到Redis中 2.基于Lua脚本&#xff0c;判断秒杀库存、一人一单&#xff0c;决定用户是否抢购成功 3. 开启新协程&#xff0c;处理数…

终于把DETR搞懂了!Detection Transformer架构详解及使用方法说明

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Calling short variants with GATK4

计算生物学实验5: Calling short variants with GATK4 1. 实验目的 本实验目的是利用 GATK4 工具准确高效地检测出基因组中的短变异。通过该工具对样本基因组进行分析&#xff0c;旨在发现单核苷酸变异&#xff08;SNV&#xff09;和小的插入缺失&#xff08;Indel&#xff0…

S32K324 DTCM/DTCM Backdoor使用及测试

文章目录 前言S32K324的Memory mapDTCM的原理DTCM的使用DTCM/DTCM backdoor测试总结 前言 S32K324的Ram在选型手册上给的是512K&#xff0c;但实际上sram只有320k,项目中对ram的需求更大&#xff0c;所以需要拓展一下ram的使用。本文分析DTCM的使用方案及测试结果 S32K324的M…

Pytorch猴痘病识别

Pytorch猴痘病识别 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 电脑系统&#xff1a;Windows11 显卡型号&#xff1a;NVIDIA Quadro P620 语言环境&#xff1a;python 3.9.7 编译器&#xff1a;jupyte…