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

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

题目要求

仅由小写字母、连字符和/或标点(不含数字)。
至多一个 连字符 ‘-’ 。如果存在,连字符两侧应当都存在小写字母(“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. 用它5分钟以后,我放弃用了四年的 Flask
  2. 【并发编程】对线程的初步认识
  3. GDCM:ReadUpToTag的测试程序
  4. 数据结构与算法之希尔排序
  5. html5不支持的属性,HTML5 常用语法一览(列举不支持的属性)
  6. mysql insert 不需要日志_详解MySQL|你不知道的新特性-8.0错误日志增强
  7. target ajax,jQuery target - jquery事件
  8. 疯狂的快递骗局:你稀里糊涂支付9.9元代收费时,有人已获利几千万!
  9. ubuntu 两行命令自动安装最合适的NVIDIA驱动
  10. 计算机音乐专业学什么软件有哪些内容,电脑音乐入门装备(软件篇)
  11. VS语音信号处理(5) C语言PCM格式语音存为WAV格式语音工程实例
  12. 解决win7 sp1专业版无法安装更新
  13. it行业se是_计算机行业SSE、SE、BSE、PE、PL各自是什么职位意思?
  14. Oracle 游标详解(cursor)
  15. windows下Elasticsearch安装、ElasticSearch-head插件安装使用
  16. python招聘杭州拉勾网_Python-爬取拉勾网招聘信息
  17. 黑客学习-SQL注入:利用Havij对PHPCMS网站进行SQL注入
  18. opengl 着色器
  19. 学习-Java继承和多态之方法重载
  20. python爬虫教程书籍-Python网络爬虫实例教程(视频讲解版)

热门文章

  1. mobl:针对移动Web开发的DSL
  2. 仿猫眼php,微信小程序 仿猫眼实现实例代码
  3. 复盘2020年全球科技行业:5G建设加速、半导体行业洗牌、云计算爆发 | TMT观察...
  4. [Angular2]eclipse中angular2开发环境的搭建
  5. 页面载入动画(loading)
  6. vsp左右分屏显示操作
  7. 环与圈_扩大路径法证明
  8. Android摄像头获取实时数据+Demo
  9. 关于捷联惯导解算的理解笔记
  10. Axure中继器怎么用