找出一个只出现一次的字符

简介:

一,问题描述

给定一个字符串,找出一个 其中只出现一次的字符

如"abaccdeff" 只出现一次的字符有 'b'    'd'     'e'

 

二,问题分析

①字符集是个常量 ,字符只有那么多。比如ASCII 一共256个,比如 字母表一共只有26个,再比如数字,一共0-9 只有10个

②出现一次,说明是次数。将字符映射成出现的次数----Map

③数组就是一种特殊的Map,数组的下标是不变的,相当于Key,下标 i 处存储的值就相当于Value

比如,定义一个存储26个字母出现频率的int[], 下标0处存储 'a',下标1处存储 'b'  ..... 下标 [c-'a'] 处 存储 字符 c

 

三,代码实现

复制代码
 1 public class FindChar {
 2     public static char onceChar(String str){
 3         if(str == null)
 4             return '\0';
 5         int[] freq = new int[256];
 6         for(int i = 0; i < freq.length; i++)
 7             freq[i] = 0;
 8         for (int i = 0; i < str.length(); i++)
 9             freq[str.charAt(i)]++;
10         for(int i = 0; i < freq.length; i++)
11             if(freq[i] == 1)
12                 return (char)i;
13         return '\0';
14     }
15     
16     public static void main(String[] args) {
17         String str1 = "Abcde";
18         String str2 = "aaBccddee";
19         String str3 = "aabbccddee";
20         
21         char c1 = onceChar(str1);
22         char c2 = onceChar(str2);
23         char c3 = onceChar(str3);
24         char c4 = onceChar(null);
25         
26         System.out.println("c1:" + c1 + " c2:" + c2 + " c3:" + c3 + " c4:" + c4);
27     }
28 }
本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/p/5511210.html,如需转载请自行联系原作者
相关文章
|
存储 传感器 定位技术
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
《移动互联网技术》 第四章 移动应用开发: Android Studio开发环境的使用方法:建立工程,编写源程序,编译链接,安装模拟器,通过模拟器运行和调试程序
328 0
|
存储 编解码
【头歌·计组·自己动手画CPU】一、计算机数据表示(理论版) 【计算机硬件系统设计】
【头歌·计组·自己动手画CPU】一、计算机数据表示(理论版) 【计算机硬件系统设计】
495 2
|
SQL Cloud Native Java
分布式事务Seata源码解析八:本地事务执行流程(AT模式下)
分布式事务Seata源码解析八:本地事务执行流程(AT模式下)
923 0
分布式事务Seata源码解析八:本地事务执行流程(AT模式下)
|
JavaScript 应用服务中间件 定位技术
从零开始vue使用cesium开发3d地形terrainProvider(二)
从零开始vue使用cesium开发3d地形terrainProvider(二)
|
SQL 关系型数据库 MySQL
清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+ 下
清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+ 下
290 0
清华学姐熬了一个月肝出这份32W字Linux知识手册,在 Github标星31K+   下
|
大数据 Linux Shell
【大数据学习篇13】在linux上安装jupyter
【大数据学习篇13】在linux上安装jupyter
392 0
《云上业务稳定性保障实践白皮书》——三.故障管理体系——3.故障管理全流程——3.3故障管理全流程
《云上业务稳定性保障实践白皮书》——三.故障管理体系——3.故障管理全流程——3.3故障管理全流程
250 0
excel使用poi获取单元格类型和数据、判断单个单元格为空、判断每行列数是否相等问题
excel使用poi获取单元格类型和数据、判断单个单元格为空、判断每行列数是否相等问题
730 0
|
数据采集 JSON 监控
网站流量日志Flume收集--新组件taildir source介绍| 学习笔记
快速学习网站流量日志Flume收集--新组件taildir source介绍
网站流量日志Flume收集--新组件taildir source介绍| 学习笔记