java - 字符数组中的索引超出范围错误
问题描述
请我练习一些java问题。我正在尝试以整数返回一个不重复的字符。我已经编写了我的代码,它适用于某些字符串,但有些字符串会导致索引超出范围错误。我不知道我在哪里做错了这是我的代码:
class Challenge {
static final int n = 256;
static char[] count = new char[n];
String str;
static void charCounter( String str ) {
for(int i = 0; i < str.length(); i++){
count[str.charAt(i)]++;
}
}
public static String firstNonRepeatingLetter( String str ) {
charCounter(str);
int pos = -1, i;
for(i = 0; i < str.length(); i++){
if(count[str.charAt(i)] == 1){
pos = i;
break;
}
}
return Character.toString(str.charAt(pos));
}
}
解决方案
您还没有考虑在所有字母重复的情况下会发生什么,例如字符串“ABBA”。
在这种情况下,您还没有完全指定该方法应该做什么,但是如果可以接受返回空字符串,您可以将 return 语句更改为:
if (pos < 0) return "";
return Character.toString(str.charAt(pos));