问题描述
请我正在练习一些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));
,
ttk.Label(root,text="How many points do you want to input:").pack()
cell_content = StringVar()
cell_content.trace_add("write",my_tk.retrieve_cell_content)
cell_content_entry = Entry(root,width = 8,textvariable = cell_content)
cell_content_entry.pack()
tkinterFunctions.py
def retrieve_cell_col(self,*args):
global CELL_COL
temp = cell_col.get()
temp = temp.upper()
如果您输入的字符串不满足if(count[str.charAt(i)] == 1){
pos = i;
break;
}
。然后pos值将保持为-1->这将在return语句中导致错误