博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
找出一个只出现一次的字符
阅读量:6348 次
发布时间:2019-06-22

本文共 1191 字,大约阅读时间需要 3 分钟。

一,问题描述

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

如"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 }

 

转载地址:http://rkvla.baihongyu.com/

你可能感兴趣的文章
Hadoop_31_MapReduce参数优化
查看>>
linux运维常见英文报错中文翻译(菜鸟必知)
查看>>
[原][osgEarth]添加自由飞行漫游器
查看>>
代码审查 Code Review
查看>>
fastjson如何指定字段不序列化
查看>>
[日常] Go语言圣经--示例: 并发的Echo服务
查看>>
BZOJ1969: [Ahoi2005]LANE 航线规划(LCT)
查看>>
linux内存管理之malloc、vmalloc、kmalloc的区别
查看>>
GreenDao 数据库升级 连接多个DB文件 或者指定不同的model&dao目录
查看>>
M1卡破解(自从学校升级系统之后,还准备在研究下)【转】
查看>>
vue 访问子组件示例 或者子元素
查看>>
linux内核--自旋锁的理解
查看>>
银行卡的三个磁道
查看>>
OpenSSL 提取 pfx 数字证书公钥与私钥
查看>>
Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
查看>>
CollapsingToolbarLayoutDemo【可折叠式标题栏,顺便带有CardView卡片式布局】
查看>>
CentOS7.4安装配置mysql5.7 TAR免安装版
查看>>
解决IE二级链接无法打开故障
查看>>
Windows phone应用开发[16]-数据加密
查看>>
SQL Server 迁移数据到MySQL
查看>>