gpt4 book ai didi

java - 字符串条件检查

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:18 27 4
gpt4 key购买 nike

我的字符串总是包含 x 或 y,我必须根据以下条件进行验证

  • 条件 1:如果所有字符都相同,则返回 true(例如:'xxxxx')
  • 条件 2:如果除一个字符外所有字符都相同,则返回 true ( Like: 'xxx')
  • 条件 3:如果所有字符都相同且其他字符更多不止一次返回 false 。 (比如:'xxxyy'//y 存在 2 次)

如何在不编写带有条件的复杂 for 循环的情况下进行检查。是否有任何使用 xor 的解决方案,或者如果我将字符串存储为 boolean 值或数字(x=1 或 true y=0 或 false)会有帮助吗?

最佳答案

x*(yx*)?|y*(xy*)? 似乎在做你想做的事。如果您不想接受空字符串,可以先将 * 更改为 +

简而言之:

  • * 是量词,表示该元素可以出现零次或多次
  • ? 表示它之前的元素是可选的
  • | 是 OR 运算符

所以在 x*(yx*)

  • x*表示零个或多个x字符,表示可以表示空字符串"", x, xx, xxx, 等等
  • yx* 可以表示 y 后面有零个或多个 x 的字符串,例如 yyx, yxx

这个正则表达式试图检查字符串是否是

  • xxxx 带有可选的 yxxx 部分,
  • yyyy 和可选的 xyyy 部分。

演示

String regex = "x*(yx*)?|y*(xy*)?";

System.out.println("xxx".matches(regex));
System.out.println("xxxy".matches(regex));
System.out.println("xxyx".matches(regex));
System.out.println("xxxyy".matches(regex));

输出:

true
true
true
false

How to check this without writing complex for loop with condition

这取决于您所说的复杂是什么意思。像这样的循环在我看来非常简单

public static boolean check(String text){
long xCounter = 0;
long yCounter = 0;
for (char ch : text.toCharArray()){
if (ch=='x') xCounter++;
else if (ch=='y') yCounter++;
else return false;//non x or y appeared
}
return xCounter < 2 || yCounter < 2;
}

关于java - 字符串条件检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27368264/

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