java判断字符串是否为有效单词
给一个字符串判断是否为有效的单词
- 题目要求
- 问题解答
- 知识拓展
题目要求
仅由小写字母、连字符和/或标点(不含数字)。
至多一个 连字符 ‘-’ 。如果存在,连字符两侧应当都存在小写字母(“a-b” 是一个有效单词,但 “-ab” 和 “ab-” 不是有效单词)。
至多一个 标点符号。如果存在,标点符号应当位于 单词 的 末尾 。
这里给出几个有效单词的例子:“a-b.”、“afad”、“ba-c”、“a!” 和 “!” 。
问题解答
用正则也可以,这边用官方的解答
public class Ten {public static boolean isValid(String word) {int n = word.length();boolean hasHyphens = false;for (int i = 0; i < n; i++) {if (Character.isDigit(word.charAt(i))) {return false;} else if (word.charAt(i) == '-') {if (hasHyphens == true || i == 0 || i == n - 1 || !Character.isLetter(word.charAt(i - 1)) || !Character.isLetter(word.charAt(i + 1))) {return false;}hasHyphens = true;} else if (word.charAt(i) == '!' || word.charAt(i) == '.' || word.charAt(i) == ',') {if (i != n - 1) {return false;}}}return true;}public static void main(String[] args) {// TODO Auto-generated method stubString sentence = "ba-c";System.out.println(isValid(sentence));}
}
知识拓展
如果是多个字符串用空格相连,例如
cat and !dog
判断其中有多少个有效单词,可以通过空格将它们分隔开来,然后再调用上述方法进行逐个判断,
public static int countValidWords(String sentence) {int n = sentence.length();int l = 0, r = 0;int ret = 0;while (true) {while (l < n && sentence.charAt(l) == ' ') {l++;}if (l >= n) {break;}r = l + 1;while (r < n && sentence.charAt(r) != ' ') {r++;}if (isValid(sentence.substring(l, r))) { // 判断根据空格分解出来的 token 是否有效ret++;}l = r + 1;}return ret;}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-valid-words-in-a-sentence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
java判断字符串是否为有效单词相关推荐
- 判断字符串不包含某个字符php,java判断字符串是否包含某个字符的方法
java判断字符串是否包含某个字符的方法: 一.contains方法 1:描述 java.lang.String.contains() 方法返回true,当且仅当此字符串包含指定的char值序列 2: ...
- java 包含汉字,【转载】Java判断字符串中是不是包含汉字
[转载]Java判断字符串中是否包含汉字 import java.util.regex.Matcher; import java.util.regex.Pattern; public class If ...
- java - 判断 字符串是否为空
java - 判断 字符串是否为空 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符 ...
- Java 判断字符串是否为空的四种方法、优缺点与注意事项
以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...
- java 包含汉字,java判断字符串中是否包含汉字
java判断字符串中是否包含汉字 package com.zuidaima.util; /** [email protected] www.zuidaima.com **/ public class ...
- Java判断字符串中是否包含中英文标点符号
Java判断字符串中是否包含中英文标点符号 /*** 该函数判断一个字符串是否包含标点符号(中文英文标点符号).* 原理是原字符串做一次清洗,清洗掉所有标点符号.* 此时,如果原字符串包含标点符号,那 ...
- JAVA判断字符串以什么什么开始_字符串不能以什么开头 Java 判断字符串是否以什么开头...
javascript怎么判断字符串是以什么开头的js中怎么判断一个字符串是以某个具体的字符串开头的? Java 判断字符串是否以什么开头 可以使用 startsWith() 判断,例如: String ...
- java判断字符串对称性问题
java判断字符串对称性问题 问题描述 编写程序:判断一个字符串是否是对称字符串.例如"abc"不是对称字符串,"aba"."abba".& ...
- java 判断字符串中是否包含emoj表情及过滤
java 判断字符串中是否包含emoj表情及过滤 package com.luo.dtqjh.utils;import org.apache.commons.lang.StringUtils;publ ...
最新文章
- 用它5分钟以后,我放弃用了四年的 Flask
- 【并发编程】对线程的初步认识
- GDCM:ReadUpToTag的测试程序
- 数据结构与算法之希尔排序
- html5不支持的属性,HTML5 常用语法一览(列举不支持的属性)
- mysql insert 不需要日志_详解MySQL|你不知道的新特性-8.0错误日志增强
- target ajax,jQuery target - jquery事件
- 疯狂的快递骗局:你稀里糊涂支付9.9元代收费时,有人已获利几千万!
- ubuntu 两行命令自动安装最合适的NVIDIA驱动
- 计算机音乐专业学什么软件有哪些内容,电脑音乐入门装备(软件篇)
- VS语音信号处理(5) C语言PCM格式语音存为WAV格式语音工程实例
- 解决win7 sp1专业版无法安装更新
- it行业se是_计算机行业SSE、SE、BSE、PE、PL各自是什么职位意思?
- Oracle 游标详解(cursor)
- windows下Elasticsearch安装、ElasticSearch-head插件安装使用
- python招聘杭州拉勾网_Python-爬取拉勾网招聘信息
- 黑客学习-SQL注入:利用Havij对PHPCMS网站进行SQL注入
- opengl 着色器
- 学习-Java继承和多态之方法重载
- python爬虫教程书籍-Python网络爬虫实例教程(视频讲解版)