给一个字符串判断是否为有效的单词

  • 题目要求
    • 问题解答
    • 知识拓展

题目要求

仅由小写字母、连字符和/或标点(不含数字)。
至多一个 连字符 ‘-’ 。如果存在,连字符两侧应当都存在小写字母(“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判断字符串是否为有效单词相关推荐

  1. 判断字符串不包含某个字符php,java判断字符串是否包含某个字符的方法

    java判断字符串是否包含某个字符的方法: 一.contains方法 1:描述 java.lang.String.contains() 方法返回true,当且仅当此字符串包含指定的char值序列 2: ...

  2. java 包含汉字,【转载】Java判断字符串中是不是包含汉字

    [转载]Java判断字符串中是否包含汉字 import java.util.regex.Matcher; import java.util.regex.Pattern; public class If ...

  3. java - 判断 字符串是否为空

    java - 判断 字符串是否为空 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低.1:if(s == null || s.equals(""));方法二: 比较字符 ...

  4. Java 判断字符串是否为空的四种方法、优缺点与注意事项

    以下是Java 判断字符串是否为空的四种方法: 方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低: if(s == null ||"".equals(s)); 方法二: ...

  5. java 包含汉字,java判断字符串中是否包含汉字

    java判断字符串中是否包含汉字 package com.zuidaima.util; /** [email protected] www.zuidaima.com **/ public class ...

  6. Java判断字符串中是否包含中英文标点符号

    Java判断字符串中是否包含中英文标点符号 /*** 该函数判断一个字符串是否包含标点符号(中文英文标点符号).* 原理是原字符串做一次清洗,清洗掉所有标点符号.* 此时,如果原字符串包含标点符号,那 ...

  7. JAVA判断字符串以什么什么开始_字符串不能以什么开头 Java 判断字符串是否以什么开头...

    javascript怎么判断字符串是以什么开头的js中怎么判断一个字符串是以某个具体的字符串开头的? Java 判断字符串是否以什么开头 可以使用 startsWith() 判断,例如: String ...

  8. java判断字符串对称性问题

    java判断字符串对称性问题 问题描述 编写程序:判断一个字符串是否是对称字符串.例如"abc"不是对称字符串,"aba"."abba".& ...

  9. java 判断字符串中是否包含emoj表情及过滤

    java 判断字符串中是否包含emoj表情及过滤 package com.luo.dtqjh.utils;import org.apache.commons.lang.StringUtils;publ ...

最新文章

  1. 宝塔linux_宝塔面板建站基础教程:如何安装宝塔面板及建立博客网站
  2. aop的四种增强以及JDK动态代理、Cglib动态代理
  3. SSL 1052——开心的金明
  4. C++ 可以把变量当成函数用~~
  5. 十大场景带你玩转外国
  6. css背景图宽度只适应,高度不变
  7. linux命令(常用)
  8. [loj6391][THUPC2018]淘米神的树(Tommy)
  9. 注解源代码学习 - Annotation @InjectMocks and @Mock debug
  10. 50行 koa-compose,面试常考的中间件原理原来这么简单?
  11. cad安装日志文件发生错误_苹果电脑Mac os系统重装时出现“准备安装时发生错误”解决方案...
  12. 高效程序猿之(三)VS2010快捷键(转)
  13. (97)Verilog HDL:秒灯设计
  14. CentOS8安装nginx详细教程
  15. android简单记账软件,简洁记账app
  16. 【 开源计划 - Flutter组件 】 星星也可以如此闪耀 flutter_star
  17. html如何插入一张图片,html如何插入图片
  18. 宝可梦合体再次流行?Pokemon Fusion的技术实现
  19. 电脑中的快捷键(常用)
  20. JavaScript-function函数

热门文章

  1. module ‘selenium.webdriver‘ has no attribute ‘PhantomJS‘
  2. linux里vnc如何使用,linux下vnc的使用
  3. Locust使用方法
  4. 光速搭建centos7虚拟机
  5. 核心能力:产品认知能力
  6. pe下找不到ssd硬盘_快启动PE中没有识别到固态硬盘的解决方法
  7. 文献阅读09期:基于ADMM方法的柔性负载实时定价
  8. 世界物联网排行榜: 华为第一、思科第二,物联网发展趋势该如何看?
  9. “工时通”助力新工作方式
  10. android 调用系统分享到微信,Android调用系统分享直接抵达微信