- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图从一个句子中使用 java 查找在两个 r
之间包含两个元音的单词。所以我读了这个句子,然后我必须找到符合上述标准的单词。例如,如果我有一个字符串,例如:“roar soccer roster reader”,方法 matches
应该为单词“roar”和“roster”返回 true
这是我想出的方法,就是干活
public boolean matches(String singleWord)
{
// set count to -1. it will increase to 2 if a 'r' is found, it decreases for each vowel
int count = -1;
// loop through a single word
for (int i=0; i<singleWord.length(); i++){
// if a 'r' is found set the count to two
if(singleWord.charAt(i) == 'r'){
// when count it's 0 exit loop
if (count == 0)
return true;
count = 2;}
// if I find a vowel count decreases
else if(isVowel(singleWord.charAt(i))){
count--;}
}
return false;
}
但它似乎有点笨拙...关于如何改进它或使其更简单的任何建议?谢谢!!!
以防万一,这是 isVowel
方法
private boolean isVowel(char c)
{
String s = c + "";
return "aeiou".contains(s);
}
最佳答案
您可以使用没有循环的简单算法来做到这一点:
'r'
的索引'r'
的索引true
。以下是实现它的方法:
boolean matches(String singleWord) {
int from = singleWord.indexOf('r');
int to = singleWord.lastIndexOf('r');
if (from < 0 || from == to) return false;
String sub = singleWord.substring(from+1, to);
return (sub.length() - sub.replaceAll("[aeiou]", "").length()) == 2;
}
以下是它的工作原理,以单词 “roadster”
为例:
从 = 0
,到 = 7
sub = "oadste"
;长度为 6sub
替换后为"dst"
;长度为 3(6 - 3) == 2
是 3,而不是 2,因此返回 false
。编辑:序列必须恰好包含两个元音,中间没有'r'
。
这使得问题略有不同,因为第一个和最后一个索引的技巧不再适用。然而,可以相对容易地构建匹配所需序列的正则表达式 - 这里是:
"r[^raeiou]*[aeiou][^raeiou]*[aeiou][^raeiou]*r"
为了理解这个正则表达式,您只需要知道 [...]
匹配方括号内的任何字符,[^...]
匹配任何除括号中的字符外的字符,并且 *
与前面的子表达式匹配零次或多次。
表达式很长,但它是由琐碎的片段组成的。匹配如下:
r
r
r
r
r
这是一个简单的实现:
boolean matches(String singleWord) {
return singleWord
.replaceAll("r[^raeiou]*[aeiou][^raeiou]*[aeiou][^raeiou]*r", "")
.length() != singleWord.length();
}
关于java - 计算两个辅音之间包含的元音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22505414/
我正在努力思考如何在句子中表示辅音。我刚才使用的代码似乎无法完成这项工作: vowels = ("aeiou") count = 0 for x in text: if not x in vo
我想为特定的辅音/元音设置生成所有可能的排列。例如,我想要所有可能的 3 字母单词排列,格式为 CVC(辅音、元音、辅音)。 我不知道有什么方法可以乘以排列: permutations("bcdfgh
在问题中,我们得到了 2 个字符串,我们必须数数。元音,没有。辅音并单独显示每个字符串的乘积。 预期输出2 6 120 7 0 输出获取0 0 02 6 12 这是代码- import java.io
我正在尝试计算一个字符串中有多少个元音/辅音/数字/其他符号。 #include #include int main(void) { int cons = 0, vow = 0, num
我确信这很简单,但我是一个完全的初学者。我正在尝试制作一个工具,其中有一个字符串并搜索 'n' + [任何辅音] 并将其替换为该辅音的两倍 - 例如 aaanq -> aaaqq。 我唯一能想到的是,
尝试学习 Python 中的正则表达式以查找具有连续元音-辅音或辅音-元音组合的单词。我将如何在正则表达式中执行此操作?如果无法在 Regex 中完成,是否有一种在 Python 中执行此操作的有效方
我是一名优秀的程序员,十分优秀!