我正在做一个经典的 leet 代码问题:找到字符串中最长的非重复子字符串。尽管堆栈溢出还有很多类似的问题。我挠了挠头好几个小时,不知道为什么我的代码会产生这个奇怪的结果。希望有人能告诉我为什么我的
我是用Java做的
public static void main( String[] args )
{
String s= "wwhoamiUrektxineabcdefghijklmno";
longestNonRepeatStr(s);
}
public static void longestNonRepeatStr(String tstring) {
String str="";
String compare="";
List<String> list= new ArrayList<String>();
int biggest =0;
//find the nonrepeating string in each loop and add to list str
for (int i=0; i<tstring.length(); i++) {
for (int j=i; j<tstring.length()-1; j++) {
str+= tstring.charAt(j);
compare= Character.toString(tstring.charAt(j+1));
if (str.contains(compare)){
list.add(str);
str="";
break;
}
}
}
//find the longest nonrepeating string in the list
for (int i=0; i<list.size(); i++) {
if (list.get(biggest).length()< list.get(i).length()) {
biggest=i;
}
}
System.out.println(list);
System.out.println(list.get(biggest));
}
对于输入字符串
"wwhoamiUrektxineabcdefghijklmno"
输出是
"abcdefghijklmnb"
但这是错误的,最后一个字母应该是“o”
猛跑小猪
红糖糍粑
墨色风雨
千巷猫影
相关分类