算法刷题——字符串| 给定一个字符类型数组chas[],判断chas中是否所有的字符都只出现过一次

import java.util.Optional;

/**
 * Author:SunLala
 * Date: 2022/3/26
 * 功能描述:(给定一个字符类型数组chas[],判断chas中是否所有的字符都只出现过一次)
 * 要求:实现复杂度为O(N)的方法
 * 举例:chas=['a','b','c'],返回true;chas=['1','2','1'],返回false;
 */
public class Test8 {

    /**
     * 自己写的
     * @param chas
     * @return
     */
    public static boolean checkChar(char[] chas){
        /**
         * 知识点:这里我一开始定义的数组长度为128,但是参考书上说的是256,很困惑
         * 很早了个答案,可以解决我的困惑
         * ASCII码共有256个字符
         * ASCII码占用一个字节,可以有0~255共256个取值。前128个为常用的字符如运算符,字母 ,数字等 键盘上可以显示的后 128个为 特殊字符是键盘上找不到的字符。
         */
        int [] charMaps = new int[256];

        if(!Optional.ofNullable(chas).isPresent()){
            return  true;
        }
        for (int i = 0; i < chas.length; i++) {
            int j = chas[i] - 0;
            charMaps[j] += 1;
            if(charMaps[j] > 1){
                return false;
            }
        }

        return true;
    }
   public static boolean isUnique(char[] chas){
        if(chas == null){
            return true;
        }
        boolean[] map = new boolean[256]; //默认全是false
        for (int i = 0; i< chas.length; i++){
            if(map[chas[i]]){  //判断已经是true,说明这是第二次出现,则直接返回false
                return false;
            }
            map[chas[i]] = true; //第一次出现把对应位置改成true
        }
        return true;
    }


    public static void main(String[] args) {
//        System.out.println('A'-0);//转正int型
//        System.out.println('A');//输出会是字符串

        System.out.println(checkChar("ASAADAD".toCharArray()));
        System.out.println(checkChar("ABC".toCharArray()));
        System.out.println(checkChar("#21.,..++".toCharArray()));
        System.out.println(checkChar("21` s*&^".toCharArray()));
        System.out.println(isUnique("#21.,..++".toCharArray()));
        System.out.println(isUnique("21` s*&^".toCharArray()));
    }
}

总结:

1. ASSIC的理解

ASCII码共有256个字符
ASCII码占用一个字节,可以有0~255共256个取值。前128个为常用的字符如运算符,字母 ,数字等 键盘上可以显示的后 128个为 特殊字符是键盘上找不到的字符。

2.对ASSIC的使用

int [] charMaps = new int[256];
int j = chas[i] - 0; 转成int
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]的代码是一个Java程序,用于找到一种拼接方式,使得拼接后的字符串具有最低的字典序。该程序使用了自定义的比较器来对字符串进行排序,排序规则是将两个字符串拼接起来,比较拼接后的字符串的字典序。然后,程序将排序后的字符串拼接起来并返回最终结果。 引用\[2\]的代码是一个Java程序,用于将字符串的空格替换为"%20"。该程序首先将字符串转换为字符数组,然后遍历字符数组,将空格替换为"%20",并将替换后的字符添加到一个新的字符串。最后,程序返回替换后的字符串。 引用\[3\]的题目描述了一个问题,给定一个字符类型数组chas,其chas的右半区全是空字符,左半区不含有空字符。现在需要将左半区的空格字符替换为"%20",并假设chas的右半区足够大以满足替换所需的空间。 综上所述,问题是给定一个字符串类型数组chas需要进行不同的操作,如找到拼接方式使得拼接后的字符串具有最低的字典序,或者将字符串的空格替换为"%20"。请问您具体想要进行哪种操作? #### 引用[.reference_title] - *1* [给定一个字符串类型数组strs,找到一种拼接方式,使得把所有字符串拼起来之后形成的字符串具有最低的字典...](https://blog.csdn.net/as1072966956/article/details/82993090)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [给定一个字符类型数组chas[]](https://blog.csdn.net/weixin_43230656/article/details/121359805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值