刷题——字符串中的单词数(力扣)

ops/2024/11/27 6:07:17/

文章目录

  • 一、读题
  • 二、思路
    • 问题1:
    • 解决思路:
    • 分割方法:
      • 方法1、
      • 方法2、
  • 三、代码实现:
    • 方法1、
    • 方法2、

一、读题

    题目来源:https://leetcode.cn/problems/number-of-segments-in-a-string/description/

    首先看例子,“Hello, my name is
john”里面有5个单词,那么就是Hello, my name is john这5个单词,很明显是由空格进行分割的

二、思路

    大思路:由空格进行分割,可以自己定义以空格为分界分割的方法,然后通过循环进行分割,也可以使用JavaString类自带的API进行分割,最终将单词数返回即可

问题1:

    首先是分割的问题,因为是以空格为界线进行分割的,那如果碰上多个空格连续在一起应该如何处理?如果空格连续在一起,也就是多个空格连续出现的时候,如果单单是按照空格进行分割的话,大概率会出现空的情况(这里的空并非是null,而是真正意义上的空,就是什么都不存储但是这个存储空间真实存在)

在这里插入图片描述

    以空格为分界进行分割,当两个空格同时在一起的时候就会出现两个空格都被当成了分界进行分割,从而有空的情况出现。

解决思路:

    解决该问题,我们需要在字符串被分割出来了之后,在计算单词数的时候进行判断,只要是被分割出来的“单词”的长度不为0,或者不等于空,那么我们就将其视为单词;如果长度为0,或者等于空,那么该“单词”就不是真正的单词。
    

    将字符串以空格为界线进行分割,并且分割出来的是单词,因此分割出来的肯定是字符串,字符串在为空的情况下,长度肯定是0,或者是使用String重写的equals()方法进行判断,该“单词”是否等于空。

分割方法:

方法1、

    我们可以定义一个方法,将字符串和分割界线传进去,在方法里面对字符串进行遍历,如果遇到分割界线就将前面的字符串切割给存储到数组里面,再继续遍历再次遇到空格就再将前面的字符串切割存储到数组里,以此类推。

方法2、

    同样也可以使用JavaString类自带的API,使用split(String)方法,用一个String数组进行接收即可。

三、代码实现:

方法1、

    public int countSegments(String s) {if(s != null) {//判断s是否为空String[] str = s.split(" ");//使用split()方法分割字符串int count = 0;//定义计数器,如果为真正的单词就加一,为假单词则不变
//遍历Str数组,判断数组内容是否存在假单词for(int i = 0 ; i < str.length ; i++) {if(!str[i].equals("")) {//使用equals()方法判断是否是假单词count++;}}return count;}return 0;}

方法2、

    public int countSegments(String s) {if(s != null) {//判断s是否为空String[] str = s.split(" ");//使用split()方法分割字符串int count = 0;//定义计数器,如果为真正的单词就加一,为假单词则不变
//遍历Str数组,判断数组内容是否存在假单词for(int i = 0 ; i < str.length ; i++) {if(str[i].length() != 0) {//通过字符串的长度来判断是否是假单词count++;}}return count;}return 0;}

http://www.ppmy.cn/ops/137005.html

相关文章

【数据结构实战篇】用C语言实现你的私有队列

&#x1f3dd;️专栏&#xff1a;【数据结构实战篇】 &#x1f305;主页&#xff1a;f狐o狸x 在前面的文章中我们用C语言实现了栈的数据结构&#xff0c;本期内容我们将实现队列的数据结构 一、队列的概念 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端…

我谈离散傅里叶变换的补零

有限序列的零延拓——零延拓不会改变离散傅里叶变换的形状的续篇。 L点序列可以做N点傅里叶变换&#xff0c;当 L ⩽ N L\leqslant N L⩽N时不会产生混叠。这部分内容在Rafael Gonzalez和Richard Woods所著的《数字图像处理》完全没有提到。 补零是序列末尾补零&#xff0c;不…

簡單易懂:如何在Windows系統中修改IP地址?

無論是為了連接到一個新的網路&#xff0c;還是為了解決網路連接問題&#xff0c;修改IP地址都是一個常見的操作。本文將詳細介紹如何在Windows系統中修改IP地址&#xff0c;包括靜態IP地址的設置和動態IP地址的獲取。 IP地址是什麼&#xff1f; IP地址是互聯網協議地址的簡稱…

nodejs第三方库sharp对图片的操作生成新图片、压缩、添加文字水印及图片水印等

Sharp是一个基于libvips的高性能Node.js图像处理库&#xff0c;它提供了广泛的功能&#xff0c;包括调整大小、裁剪、旋转、格式转换等。Sharp可以处理多种图像格式&#xff0c;并且能够高效地转换图像格式。 相关说明及用法看&#xff1a;https://sharp.nodejs.cn/ 安装&#…

k8s集群增加nfs-subdir-external-provisioner存储类

文章目录 前言一、版本信息二、本机安装nfs组件包三、下载nfs-subdir-external-provisioner配置文件并进行配置1.下载文件2.修改配置 三、进行部署备注&#xff1a;关于镜像无法拉取问题的处理 前言 手里的一台服务器搭建一个单点的k8s集群&#xff0c;然后在本机上使用nfs-su…

001 MATLAB介绍

前言&#xff1a; 软件获取渠道有很多&#xff0c;难点也就是百度网盘下载慢&#xff1b; 线上版本每月有时间限制。 01 MATLAB介绍 性质&#xff1a; MATLAB即Matrix Laboratory 矩阵实验室的意思&#xff0c;是功能强大的计算机高级语言, 已广泛应用于各学科研究部门、…

力扣-位运算-4【算法学习day.44】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…

logminer挖掘日志归档查找问题

--根据发生问题时间点查找归档文件 select first_time,NAME from gv$archived_log where first_time>2016-03-15 17:00:00 and first_time<2016-03-15 21:00:00; 2016-03-15 17:23:55 ARCH/jxdb/archivelog/2016_03_15/thread_1_seq_41588.4060.906577337 2016-03-15 17:…