Java 检查字符串中的所有字符是否相同,无循环

Java 检查字符串中的所有字符是否相同,无循环,java,string,character,Java,String,Character,如果字符串中的所有字符都相同,而不使用正则表达式、循环或递归,如何构建返回TRUE的Java方法 示例: aaaaaa --> True abaaaa --> False Aaaaaa --> False 您可以使用.chars()将字符串转换为IntStream,并使用.distinct().count()==1检查流是否具有1的不同计数 String s = "aaaaaa"; boolean isAllCharsSame = s.chars().di

如果
字符串
中的所有字符都相同,而不使用正则表达式、循环或递归,如何构建返回
TRUE
的Java方法

示例:

aaaaaa --> True
abaaaa --> False
Aaaaaa --> False

您可以使用
.chars()
将字符串转换为
IntStream
,并使用
.distinct().count()==1
检查流是否具有1的不同计数

String s = "aaaaaa";
boolean isAllCharsSame = s.chars().distinct().count() == 1;
如果字符串
s
中的所有字符相同,则
isAllCharsSame
将为
true
,否则
false

编辑:

.chars()
不适用于Unicode代码点,如
“您可以使用

String s=“aaaaaaaaa”;
布尔值same=s.replaceAll(“+s.charAt(0),”).length()=0;

使用递归,您完全可以不用循环就可以完成。这很糟糕,但也有可能:

boolean singleChar(String s) {
  // Add check to make sure there is at least one char.

  char first = s.charAt(0);
  return singleCharRecursive(first, 1, s);
}

boolean singleCharRecursive(char first, int idx, String s) {
  return idx >= s.length()
      || (s.charAt(idx) == first && singleCharRecursive (first, idx+1, s));
}
这是另一个答案

我相信可能还有另一种方法可以分析字符串中的第一个字符,看看它们是否都匹配,但这个方法有效

String t = "aaa";
char c = t.charAt(0);
long cnt = t.chars().filter(ch -> ch == c).count();
System.out.println(cnt==t.length());
太长,读不下去了
如果(“您可以使用方法:

boolean r=“aaaaaaa”.replace(“a”,”).length()==0;
System.out.println(r);//true


另请参见:

以第一个字符为例,例如在
abaaa
count i中
str.length()中有多少个a
如果它相等,它由所有相同的字符组成,如果不是,那么
返回false
为什么没有循环?你必须以某种方式迭代所有字符;递归将是一种可怕的方法。我认为没有循环是不可能的。你可能会发现一些奇特的内置方法,但它也会使用自己的循环。@AndyTurner对于一个类来说这是一个小挑战,我相信目标是学习内置方法和方法链接。输入
“@BasilBourque失败。我已经更新了答案,谢谢。你也可以这样做。
boolean result=t.chars().allMatch(ch->ch==t.charAt(0));
String t = "aaa";
char c = t.charAt(0);
long cnt = t.chars().filter(ch -> ch == c).count();
System.out.println(cnt==t.length());
if ( "You can use 
replace
method:

boolean r = "aaaaaaa".replace("a", "").length() == 0;
System.out.println(r); // true