IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> leetcode每日一题2047. 句子中的有效单词数~ 简单的字符串匹配 -> 正文阅读

[数据结构与算法]leetcode每日一题2047. 句子中的有效单词数~ 简单的字符串匹配

📖本篇内容:leetcode每日一题2047. 句子中的有效单词数~ 简单的字符串匹配

📑 文章专栏:leetcode每日一题《打卡日常》

📆 最近更新:2022年1月26日 leetcode每日一题2013. 检测正方形 哈希表的双重映射简单题 剩下的就是数学功底了~

🙊个人简介:一只二本院校在读的大三程序猿,本着注重基础,打卡算法,分享技术作为个人的经验总结性的博文博主,虽然可能有时会犯懒,但是还是会坚持下去的,如果你很喜欢博文的话,建议看下面一行~(疯狂暗示QwQ)

🌇 点赞 👍 收藏 ?留言 📝 一键三连 关爱程序猿,从你我做起

🙊写在前面🙊

吃饭睡觉与代码,今天又是充实的一天呢~

题目

句子仅由小写字母(‘a’ 到 ‘z’)、数字(‘0’ 到 ‘9’)、连字符(’-’)、标点符号(’!’、’.’ 和 ‘,’)以及空格(’ ')组成。每个句子可以根据空格分解成 一个或者多个 token ,这些 token 之间由一个或者多个空格 ’ ’ 分隔。

如果一个 token 同时满足下述条件,则认为这个 token 是一个有效单词:
仅由小写字母、连字符和/或标点(不含数字)。

至多一个 连字符 ‘-’ 。如果存在,连字符两侧应当都存在小写字母(“a-b” 是一个有效单词,但 “-ab” 和 “ab-” 不是有效单词)。

至多一个 标点符号。如果存在,标点符号应当位于 token 的 末尾 。
这里给出几个有效单词的例子:“a-b.”、“afad”、“ba-c”、“a!” 和 “!” 。
给你一个字符串 sentence ,请你找出并返回 sentence 中 有效单词的数目 。

示例

示例1:

输入:sentence = "cat and  dog"
输出:3
解释:句子中的有效单词是 "cat"、"and" 和 "dog"

示例2:

输入:sentence = "!this  1-s b8d!"
输出:0
解释:句子中没有有效单词
"!this" 不是有效单词,因为它以一个标点开头
"1-s" 和 "b8d" 也不是有效单词,因为它们都包含数字

示例3:

输入:sentence = "alice and  bob are playing stone-game10"
输出:5
解释:句子中的有效单词是 "alice"、"and"、"bob"、"are" 和 "playing"
"stone-game10" 不是有效单词,因为它含有数字

提示

1 <= sentence.length <= 1000
sentence 由小写英文字母、数字(0-9)、以及字符(' '、'-'、'!'、'.' 和 ',')组成
句子中至少有 1 个 token

📝思路📝

?代码实现?

class Solution {
    public int countValidWords(String sentence) {
    	//字符串切割 切割成每个单词 然后依次判断单词是否符合要求
        String[] strArr = sentence.split(" ");
        //添加变量用于记录结果
        int res = 0 ;
        //遍历进行判断
        for (String str : strArr){
            if (check(str))res++;
        }
        return res;
    }

    public boolean check(String t){
        //如果当前字符长度为空 直接返回不是单词
        if(t.length()==0){return false;}
        //维护变量用于判定其是否为拼接单词
        boolean hasHyphen=false;
        //遍历单词中的字符
        for(int i=0;i<t.length();i++){
        	//如果单词中出现了数字直接返回false
            if(Character.isDigit(t.charAt(i))){return false;}
            else if(t.charAt(i)=='-'){
            	//如果一个单词中遇到第二个-返回false
                if(hasHyphen){return false;}
                //第一次遇到-之后将其当做拼接单词
                hasHyphen=true;
                //拼接字符需要进行判断每一位都是小写字母,反之返回false
                if(!(i>0&&Character.isLowerCase(t.charAt(i-1))&&i<t.length()-1&&Character.isLowerCase(t.charAt(i+1)))){return false;}
            }//标点字符不在最后一位returnfalse
            else if(!Character.isLowerCase(t.charAt(i))&&i!=t.length()-1){return false;}
        }
        return true;
    }
}

运行结果

在这里插入图片描述

🙊写在最后🙊

2022-1-27 今天小付打卡了哦~

美好的日出 美好的山河

都因有你存在 而璀璨 耀眼

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 12:10:13  更:2022-01-28 12:10:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 19:22:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码