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 ...
最新文章
- 宝塔linux_宝塔面板建站基础教程:如何安装宝塔面板及建立博客网站
- aop的四种增强以及JDK动态代理、Cglib动态代理
- SSL 1052——开心的金明
- C++ 可以把变量当成函数用~~
- 十大场景带你玩转外国
- css背景图宽度只适应,高度不变
- linux命令(常用)
- [loj6391][THUPC2018]淘米神的树(Tommy)
- 注解源代码学习 - Annotation @InjectMocks and @Mock debug
- 50行 koa-compose,面试常考的中间件原理原来这么简单?
- cad安装日志文件发生错误_苹果电脑Mac os系统重装时出现“准备安装时发生错误”解决方案...
- 高效程序猿之(三)VS2010快捷键(转)
- (97)Verilog HDL:秒灯设计
- CentOS8安装nginx详细教程
- android简单记账软件,简洁记账app
- 【 开源计划 - Flutter组件 】 星星也可以如此闪耀 flutter_star
- html如何插入一张图片,html如何插入图片
- 宝可梦合体再次流行?Pokemon Fusion的技术实现
- 电脑中的快捷键(常用)
- JavaScript-function函数
热门文章
- module ‘selenium.webdriver‘ has no attribute ‘PhantomJS‘
- linux里vnc如何使用,linux下vnc的使用
- Locust使用方法
- 光速搭建centos7虚拟机
- 核心能力:产品认知能力
- pe下找不到ssd硬盘_快启动PE中没有识别到固态硬盘的解决方法
- 文献阅读09期:基于ADMM方法的柔性负载实时定价
- 世界物联网排行榜: 华为第一、思科第二,物联网发展趋势该如何看?
- “工时通”助力新工作方式
- android 调用系统分享到微信,Android调用系统分享直接抵达微信