gpt4 book ai didi

java - 如何检查字符串中的字母序列是否按顺序出现?

转载 作者:行者123 更新时间:2023-12-01 07:56:18 25 4
gpt4 key购买 nike

我正在开发一种方法,该方法将字符串数组和三个小写字母作为输入。

该方法应该查找以第一个字母开头的单词,并按照插入的顺序包含其他两个字母。

如果一个字母被插入两次,它应该在单词中出现两次。

例如,单词expected(e,e,e)的合法单词,但单词seemed则不合法。

通过我的以下代码,我得到的任何输入都是合法的,这是错误的。

    public static void printWords(String[] vocabulary,
String firstLetter, String secondLetter, String thirdLetter){

int counter=0;
for (String str : vocabulary){
int index1=0;
int index2=0;
String newstr=str;

if (((str.substring(0,1).equals(firstLetter)))){
newstr=str.substring(1, str.length());
if (newstr.contains(secondLetter)){
index1=str.indexOf(secondLetter);
newstr=str.substring(index2, str.length());
}
if (newstr.contains(thirdLetter)){
index2=str.indexOf(thirdLetter);

}

}
if (index2>index1)
{
counter++;
System.out.println(str);
}

}
System.out.println("found "+ counter+" words");

}

最佳答案

使用正则表达式更容易实现:

boolean matches(String word, String letter1, String letter2, String letter3) throws IllegalArgumentException {

String[] s = new String[] {letter1, letter2, letter3};

for (String l : s) {
if (l.length() != 1)
throw new IllegalArgumentException("Wrong input, only 1-char strings are allowed!");
if (l < "a" || l > "z")
throw new IllegalArgumentException("Wrong input, only lowercase latin letters are allowed!");
}

Pattern regex = Pattern.compile(s[0] + ".*" + s[1] + ".*" + s[2] + ".*");

// will produce a regex like "a.*b.*c.*"

return regex.matcher(word).matches();
}

关于java - 如何检查字符串中的字母序列是否按顺序出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29670402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com