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


    一,问题描述

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

    如"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 '';
     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 '';
    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 }
  • 相关阅读:
    HTML中一定会常用的标签和标签属性(这是网页构成的重要元素
    HTML(超文本语言)
    SQL SERVER中视图、事务
    important覆盖行内样式
    线性渐变
    「JavaScript面向对象编程指南」闭包
    移动端文章图片大小限制
    Vue中ajax返回的结果赋值
    「JavaScript面向对象编程指南」基础
    JS媒体查询
  • 原文地址:https://www.cnblogs.com/hapjin/p/5511210.html
Copyright © 2020-2023  润新知