java实现输出字符串中第一个出现不重复的字符详解

 更新时间:2017年04月24日 09:04:35   投稿:lqh  
这篇文章主要介绍了java实现输出字符串中第一个出现不重复的字符详解的相关资料,需要的朋友可以参考下

java实现输出字符串中第一个出现不重复的字符详解

比如:输入name输出n,输入teeter输出r,输入namename输出null

具体实现代码如下:

import java.util.Scanner;

public class Main
{
  public static void main(String[] args)
  {
    Scanner in = new Scanner(System.in);
    String str = in.next();
    for(int i =0 ; i < str.length() ; i++)
    {
      if(str.lastIndexOf(str.char(i)) == i && 
      str.indexOf(str.char(i)) == i)
      {
        System.out.println(str.char(i));
        break;
      }
    }

  }
}

在这个实现代码中我们使用了String类的三个方法成员:

String.length():获取字符串的长度
String.charAt(int index):获取索引index的字符
String.lastIndexOf(char c):获取字符c最后一次出现在字符串中的索引
String.indexOf(char c):获取字符c第一次出现在字符串中的索引

其实我们也可以不使用字符串的这些方法就可以实现了,下面是我个人使用for循环来实现的代码:

import java.util.Scanner;
public class Main
{
  public static void main(String[] args)
  {
    Scanner in = new Scanner(System.in);
    String str = in.next();
    char[] cb = new char[str.length()];
    //将字符串中的字符一次存入cb[]
    for(int i =0 ;i <str.length() ; i++)
    {
      cb[i] = str.charAt(i);
    }
    for(int i = 0 ; i < str.length() ; i++)
    {
      for(int j = 0 ; j < str.length() ; j++)
      {
        if(cb[i] == cb[j] && cb[i] != '0')
        {
          char c = cb[i];
          for(int z = 0 ; z < str.length() ; z++)
          {
            if(cb[z] == c)
              cb[z] = '0';
          }
        }
      }
    }
    for(int i = 0 ; i <str.length() ; i++)
    {
      if(cb[i] != '0')
      {
        System.out.println(cb[i]);
        break;
      }
    }
  }
}

这种方法可以实现,不过这种方法的时间复杂度特别的大,系统开销也特别大,因此我们最好不要使用循环嵌套,除非迫不得已,不然对系统开销是很大的。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Spring Boot 访问安全之认证和鉴权详解

    Spring Boot 访问安全之认证和鉴权详解

    这篇文章主要介绍了Spring Boot 访问安全之认证和鉴权,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Spring Mvc中CommonsMultipartFile的特性实例详解

    Spring Mvc中CommonsMultipartFile的特性实例详解

    这篇文章主要给大家介绍了关于Spring Mvc中CommonsMultipartFile特性的相关资料,SpringMVC拥有强大的灵活性,非侵入性和可配置性,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • MyBatis 实现动态排序的多表查询

    MyBatis 实现动态排序的多表查询

    本文将展示如何在 Java 项目中结合 MyBatis 实现动态排序,尤其是在涉及多表查询的情况下,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • SpringBoot整合Spring Data Elasticsearch的过程详解

    SpringBoot整合Spring Data Elasticsearch的过程详解

    这篇文章主要介绍了SpringBoot整合Spring Data Elasticsearch的过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 基于Java中Math类的常用函数总结

    基于Java中Math类的常用函数总结

    下面小编就为大家带来一篇基于Java中Math类的常用函数总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • Mybatis-Spring连接mysql 8.0配置步骤出错的解决方法

    Mybatis-Spring连接mysql 8.0配置步骤出错的解决方法

    这篇文章主要为大家详细介绍了Mybatis-Spring连接mysql 8.0配置步骤出错的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • java编程之单元测试(Junit)实例分析(附实例源码)

    java编程之单元测试(Junit)实例分析(附实例源码)

    这篇文章主要介绍了java编程之单元测试(Junit),结合实例形式较为详细的分析总结了Java单元测试的原理、步骤及相关注意事项,并附带了完整代码供读者下载参考,需要的朋友可以参考下
    2015-11-11
  • java代理模式与动态代理模式详解

    java代理模式与动态代理模式详解

    代理就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用
    2014-02-02
  • Spring整合Mybatis思路梳理总结

    Spring整合Mybatis思路梳理总结

    MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作,本篇文章带你了解Spring整合Mybatis的思路
    2022-02-02
  • java实现单词搜索迷宫游戏

    java实现单词搜索迷宫游戏

    这篇文章主要介绍了java实现单词搜索迷宫游戏,实例分析了迷宫游戏的实现技巧,需要的朋友可以参考下
    2015-05-05

最新评论