例如,字符串abba
包含所有重复的字母,对于这种字符串,我需要能够返回某个值。我有以下代码,但这只告诉我像“aaaa”这样的字符串是否包含所有相同的字母,并且不适用于包含两种类型的重复字母的字符串。
public static boolean checkAllRepeated(String input)
{
char[] chars = input.toCharArray();
int[] counts = new int[chars.length];
int n = input.length();
for (int i = 1; i < n; i++)
if (chars[i] != chars[0])
return false;
return true;
}
答案 0 :(得分:2)
如果我理解正确,如果您的输入字符串包含仅出现一次的字符,您希望函数返回false
吗?
public static boolean checkAllRepeated(String input)
{
Map<Character, Integer> map = new HashMap<>();
for (Character c : input.toCharArray()){
map.putIfAbsent(c, 0);
map.put(c, map.get(c)+1);
}
return map.values().stream().noneMatch(i -> i == 1);
}
答案 1 :(得分:1)
地图应该很容易,
String input = "aabbcc";
Map<Character, Integer> unique = new HashMap<>();
for(Character aChar : input.toCharArray()){
if(unique.get(aChar) != null) {unique.put(aChar, unique.get(aChar) + 1);}
else { unique.put(aChar, 1); }
}
if(unique.containsValue(1)){System.out.println("no duplicates"); }
答案 2 :(得分:0)
对于一个字符串,其中只有一个字符不重复,即一个字符的出现是奇数,那么你可以按照异或操作
public char solution(char[] cs) {
if (cs.length > 0) {
int i;
int res = 0;
for (i = 0; i < cs.length; i++) {
res = res ^ cs[i];
}
return (char) res;
}
return (char) -1;
}
答案 3 :(得分:0)
据我所知,如果只有一个字符没有重复,那么返回false,这将有助于此目的。
public static boolean checkAllRepeated(String input)
{
char[] chars = input.toCharArray();
int counts;
int n = input.length();
for (int i = 1; i < n; i++){
counts =1;
for (int j = 0; j < n; j++){
if (j != i && chars[i] == chars[j]) counts++;
}
if(counts==1)return false;
}
return true;
}