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

简介:

一,问题描述

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

如"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,如需转载请自行联系原作者
相关文章
|
6月前
|
C#
C# 中的字符与字符串
C# 中的字符与字符串
|
7月前
|
Java
Java正则表达式去掉非汉字字符
【5月更文挑战第11天】Java正则表达式去掉非汉字字符
154 3
|
6月前
|
存储 Cloud Native Linux
单字符 和 宽字符
单字符 和 宽字符
|
7月前
|
自然语言处理
字符范围
字符范围
118 2
|
C语言
向字符串添加空格
首先我们可以算出s数组的大小-len,也可以直接得到spaces的大小-即要添加的空格数,那么我们要创建的数组大小是len+spacesSize吗? 不是,应该是len+spacesSize+1,这里的加一是存放一个'\n' 这里呢 我们可以写一个for i循环,用来把s中的元素放到arr里面,然后在外面定义一个falg用来充当arr的下标,存进一个元素falg++,再定义一个j=0,当i == space[j]就存放空格,每存放一个空格++.
76 0
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
输入一个字符,判断该字符是大写英文字母,小写英文字母,空格,还是其它字符
|
存储 Shell 程序员
字符和字符串
一.案例:代码展示 二.如何给字符串赋值
字符和字符串
字符串加空格
给定一个字符串,在字符串的每个字符之间都加一个空格。 输出修改后的新字符串。
163 0
|
C#
C# 字符串首字符大写
原文:C# 字符串首字符大写 我找到一些把字符串首字符大写的方法。 假如需要把字符串 "red" 转换为 "Red",把 "red house" 转为 "Red house" 或者单词的第一个大写,下面就是我从网上看到的技术。
916 0