首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在字符串中打印第一个非重复字符的Java程序

在字符串中打印第一个非重复字符的Java程序
EN

Stack Overflow用户
提问于 2018-06-12 05:14:55
回答 2查看 87关注 0票数 0
代码语言:javascript
复制
public static void main(String[] args) {
        String str = "XXYZZA";

        char[] a = str.toCharArray();
        int count=0;
        for (int i = 0; i < a.length; i++) 
        {
            if (a[i] == a[i++]) 
            {
                count++;

            } 
            else
                System.out.println(a[i++]);

        }

    }

“否则”部分中的print语句未被执行。所需的输出应该是

代码语言:javascript
复制
Y
A
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-12 05:37:26

好的,首先,也是最重要的,正确的缩进,帮助我们理解代码.

其次,由于两个原因,if (a[i] == a[i++])并不是正确的选择。

  1. 您的for循环将开始跳过i值,因为您使用的是一元运算符,它将直接对操作数执行操作。
  2. ArrayIndexOutOfBounds:一旦I达到a.length - 1的最大值,您的测试条件i++将尝试访问索引 a.length中的元素,正如您可能已经猜到的那样,该元素并不存在。

您需要的是某种排序算法,而不需要实际保存排序序列。

票数 2
EN

Stack Overflow用户

发布于 2018-06-12 05:37:28

就像这样,也许能帮到你

代码语言:javascript
复制
  public static void main(String[] args) {
    String str = "XXYZZA";

    char[] a = str.toCharArray();
    HashSet<Character> set = new HashSet<>();
    set.add( a[0]);
    for (int i = 1; i < a.length; i++)
    {
      if (!set.contains(a[i]) && (i+1 == a.length || a[i] != a[i+1]))
      {
        System.out.println(a[i]);
      }
      set.add(a[i]);

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50809676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档