IT公司100题-17-第一个只出现一次的字符

拟墨画扇 提交于 2020-03-04 12:21:44

问题描述:

在一个字符串中找到第一个只出现一次的字符。例如输入asdertrtdsaf,输出e。

 

分析:

最简单的方法是直接遍历,时间复杂度为O(n^2)。

进一步思考:

字符串中的字符,只有256种可能性,使用字符的为下标,扫描一遍,存储各个字符在字符串中的出现。第二次扫描字符串,查看每个字符在字符串中的出现次数,如果为1,输出即可。

代码实现:

package oschina.IT100;

/**
 * @project: oschina
 * @filename: iT17.java
 * @version: 0.10
 * @author: JM Han
 * @date: 12:54 2015/12/19
 * @comment: find the 1st char that only exist once in string
 * @result:
 */

public class iT17 {
   public static Character findChar(String s){
      int[] int_set = new int[256];
      char[] char_set = s.toCharArray();
      for(char c: char_set){
         int_set[c]++;
      }
      for(char c: char_set){
         if(int_set[c] == 1)
            return c;
      }
      return '\0';
   }
   public static void main(String[] args) {
      System.out.println("The 1st char is: " + findChar("asdertrtdsaf"));
   }
}


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!