gpt4 book ai didi

java - 在 Java 中查找第一个没有重复的字符时出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:12:41 26 4
gpt4 key购买 nike

打印 String 中的第一个非重复字符时遇到一个奇怪的问题。

例如,如果我将“sasso”作为字符串,它会正确返回:'a'

但如果我尝试使用“sassa”,我想知道为什么它会返回:“s”

public class FirstChar {

public char findFirst(String s) {

boolean[] letters = new boolean[26];
char[] firstLetter = new char[26];

for (int i = 0; i < s.length(); i++) {

if (letters[s.charAt(i) - 97] &&
(firstLetter[0] != (s.charAt(i)))) {

System.out.println( firstLetter[0]);
return firstLetter[0];
}
letters[s.charAt(i) - 97] = true;
char c = (char) (s.charAt(i));
firstLetter[i] = c;
}
System.out.println(firstLetter[1]);
return firstLetter[1];
}
public static void main(String args[]) {
FirstChar obj = new FirstChar();
obj.findFirst("sassa");
}

最佳答案

您需要确保 firstLetter 充当非重复字符队列,并在遇到重复字符时从中移除。您总是在第 0 个或第 1 个位置返回字符而不覆盖 firstLetter 数组元素。如果是 sassa,当遇到最后一个字符 a 时,第一个 if 中的条件评估为 true,因此返回 s 这是存储在 firstLetter 数组中的第一个字符。你需要 HashMap 和 Queue 来实现这个

关于java - 在 Java 中查找第一个没有重复的字符时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46243246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com