zoukankan      html  css  js  c++  java
  • 删除字符串中重复的字符

    描述

    删除字符串中重复的字符

    分析

    方法一,蛮力法。两个循环,大循环每次从数组中取出一个字符,小循环重新遍历该数组是否含有该字符。
    方法二:排序法。对两个字符串的字符进行排序,再比较。
    方法三:空间换时间。acsII共256个字符。使用256bit记录每个字符是否已出现过。遍历字符串,若已出现过则将该字符替换为''
    方法四:正则表达式。"(?s)(.)(?=.*\1)"

    代码

    方法三,空间换时间。

    public class Test {
        public static String removeDuplucate(String str){
            char[] chars=str.toCharArray();
            int len=chars.length;
            int[] flag=new int[8]; //有8*32=256bit空间,每一bit代表字符是否出现过。
            for(int i=0;i<len;i++){
                int index=(int)chars[i]/32;
                int shift=(int)chars[i]%32;
                if((flag[index]&(1<<shift))!=0)
                    chars[i]='';
                flag[index]|=(1<<shift);
            }
    
            int j=0;
            for(int i=0;i<len;i++){
                if(chars[i]!='')
                    chars[j++]=chars[i];
            }
            return new String(chars,0,j);
    
        }
        public static void main(String[] args) {
            System.out.println(removeDuplucate("zayyyy"));
        }
    }

     

  • 相关阅读:
    C# 多态性
    C# FileStream类
    C# File文件类
    加快访问GitHub的速度
    Git-修改.gitignore后使其配置生效的方法总结
    ES6 解构赋值
    avue表单数据请求
    uniapp canvas组件复用
    uniappH5 fly.js Golang 解决跨域问题
    java bug记录
  • 原文地址:https://www.cnblogs.com/zadomn0920/p/6358283.html
Copyright © 2011-2022 走看看