Java程序查找字符流中的第一个非重复字符


在一个字符串中查找第一个非重复字符是一个常见的编程问题。它涉及查找在字符串中只出现一次的第一个字符。这项任务有助于理解如何在Java中操作字符串和使用基本的数据结构

问题陈述

给定一个字符串,找出第一个不重复的字符。如果所有字符都重复,则表明没有非重复字符。

输入

tutorialspoint

输出

The first non-repeating character of the string is T

从字符流中查找第一个非重复字符的步骤

以下是从字符流中查找第一个非重复字符的步骤:

  • 使用ArrayList进行初始化,以跟踪可能是非重复的字符。
  • 使用布尔数组标记出现多次的字符。
  • 遍历字符串中的每个字符,如果字符不重复且不在列表中,则将其添加到列表中;如果在列表中,则将其从列表中移除并将其标记为重复。
  • 列表中的第一个字符是第一个非重复字符。
  • 如果列表为空,则表示未找到非重复字符。

示例

要从字符流中查找第一个非重复字符,Java代码如下:

import java.util.ArrayList;
import java.util.List;

public class Demo {
    final static int max_chars = 256;

    static void non_repeating_char() {
        List<Character> my_list = new ArrayList<Character>();
        boolean[] repeat = new boolean[max_chars];
        String my_str = "tutorialspoint";

        for (int i = 0; i < my_str.length(); i++) {
            char x = my_str.charAt(i);
            if (!repeat[x]) {
                if (!my_list.contains(x)) {
                    my_list.add(x);
                } else {
                    my_list.remove((Character) x);
                    repeat[x] = true;
                }
            }
        }

        if (my_list.size() != 0) {
            System.out.println("The first non-repeating character is " + my_list.get(0));
        } else {
            System.out.println("No non-repeating character found");
        }
    }

    public static void main(String[] args) {
        non_repeating_char();
    }
}

输出

The first non-repeating character of the string is u

代码解释

名为Demo的类包含一个名为non_repeating_char 的函数。创建一个列表并定义一个字符串。遍历此字符串,检查每个字符,并将它的计数存储为布尔变量,存储在一个名为repeat数组中。如果重复则值为true,否则为false。调用主函数,并在控制台上显示相关消息。

更新于:2024年7月23日

1K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.