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"));
        }
    }

     

  • 相关阅读:
    jenkins更换国内源
    部署jdk和maven
    Prometheus监控Nginx
    Prometheus监控MySQL
    MySql里动态视图的实现
    MySql里split函数的实现
    HTML编码规范
    消弱反驳18招
    Pr2020
    记忆准则
  • 原文地址:https://www.cnblogs.com/zadomn0920/p/6358283.html
Copyright © 2011-2022 走看看