字符串去重的5种方式

2023-10-26

public class Demo {
	public static void main(String[] args) {
		String str = "albcad12l;''>sfg,?>";
		String newStr = quChong5(str);
		System.out.println(newStr);	
	}	
}
//1.字符串
	public static String quChong(String str){
		String newStr = "";
		for (int i = 0; i < str.length(); i++) {
			String strs = str.charAt(i) + "";
			if(newStr.indexOf(strs) == -1){
				newStr = newStr + strs;
			}
		}
		return newStr;	
	}
//2.set
	public static String quChong2(String str){
		Set set = new HashSet();
		for (int i = 0; i < str.length(); i++) {
			String strs = str.charAt(i) + "";
			set.add(strs);
		}
		
		String result = toString(set);
		return result;
	}
	
	public static String toString(Set set){
		String result = "";
		for (Object object : set) {
			result = result + (String)object;
		}
		return result;
	}
//3.list
	public static String quChong3(String str){
		
		List list = new ArrayList();
		
		for (int i = 0; i < str.length(); i++) {
			String strs = str.charAt(i) + "";
			if(!list.contains(strs)){
				list.add(strs);
			}
		}
		String newStr = toString(list);
		return newStr;
	}
	
	public static String toString(List list){
		String result = "";
		for (int i = 0; i < list.size(); i++) {
			result = result + list.get(i);
		}
		return result;
	}
	//4.hashMap
	public static String quChong4(String str){
		Map map = new HashMap();
		for (int i = 0; i < str.length(); i++) {
			String strs = str.charAt(i) +"";
			map.put(strs, 1);
		}
		Set set = map.keySet();
		String result = toString(set);
		return result;
	}
	
	public static String  toString2(Set set) {
		String result = "";
		for (Object object : set) {
			result = result + (String)object;
		}
		return result;
	}
//5.字符串数组
	//[a,b,c,a,b,f,g]
	public static String quChong5(String str){
		//定义一个数组
		//把传进来字符串的每个字符放在数组里
		String[] strs = new String[str.length()];
		for (int i = 0; i < strs.length; i++) {
			String s = str.charAt(i)+"";
			strs[i] = s;
		}
		
		//数组里如果有重复的,把重复的字符串赋值成随便定义的字符串(目的:遍历这个数组,把这个数组中不等于随便定义的那个字符串的所有字符串放在重新定义的新数组中)
		for (int i = 0; i < strs.length - 1; i++) {
			for (int j = i + 1; j < strs.length; j++) {
				if(strs[i].equals(strs[j])){
					strs[j] = str;
				}
			}
		}
		
		//找出不重复的所有字符串的个数
		int count = 0;
		for (int i = 0; i < strs.length; i++) {
			if(strs[i].equals(str)){
				count = count + 1;
			}
		}
		
		//定义一个新数组(已算出新数组的长度)
		//把不重复的字符串放进新数组中
		String newstr = "";
		int newCount = str.length()-count;
		int index = 0;
		String[] newStrings = new String[newCount];
		for (int i = 0; i < strs.length; i++) {
			if(!strs[i].equals(str)){
				newStrings[index] = strs[i];
				index = index++;
				newstr = newstr + strs[i];
			}
		}
		return newstr;
	}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串去重的5种方式 的相关文章

随机推荐

  • win10系统下将DMG转为ISO镜像——(虚拟机黑苹果操作)

    1 下载镜像 http www msdn3 com 6 20190826 这个网站超级好用 2 下载后为dmg文件 如果可以直接下载iso文件的可以跳过转换步骤 3 dmg文件转iso文件 1 下载DMG2IMG 32位 64位版Windo
  • loadrunner接口压测脚本编写模板

    接口报文 Action web reg save param return code LB res code RB Search Body Ord 1 LAST lr start transaction httpRequest web ad
  • jdbc连接数据库mysql的问题_JDBC连接Mysql数据库出现的问题汇总

    MySQL 前言 最近安装了一个 mysql 8 0 版本的数据库 在程序中连接的时候可谓是状况不断 之前也会遇到一些问题 这里就对使用 JDBC 连接mysql 会出现的问题做一个汇总 在此之前说明一下环境 开发工具 IDEA mysql
  • Selenium自动化测试 —— 通过cookie绕过验证码的操作

    验证码的处理 对于web应用 很多地方比如登录 发帖都需要输入验证码 类型也多种多样 登录 核心操作过程中 系统会产生随机的验证码图片 进行验证才能进行后续操作 解决验证码的方法如下 1 开发做个万能验证码 推荐 2 测试环境关闭验证码功能
  • Easy Code插件使用(附Spring Data JPA生成模板)

    文章目录 一 概述 二 安装 1 安装插件 2 连接数据库 三 生成代码 四 配置EasyCode 五 Spring Data JPA模板 1 controller类 2 service接口 3 serviceImpl实现类 4 dao接口
  • Python之体育竞技分析

    来源 Python语言程序设计 嵩天 一 问题描述 需求 高手过招 胜负只在毫厘 如何科学地分析体育竞技比赛 输入 球员的水平 输出 预测比赛成绩 二 具体分析 三 代码实现 from random import random 生成随机数
  • uniapp picker实现:市区镇村4级懒加载

    使用这种方法的原因 市区镇村4级数据太大 后台接口响应时间太长 方法实现 样式 view
  • 深度学习各方向开源数据集分类汇总

    转载自 深度学习各方向开源数据集分类汇总 持续更新中 哔哩哔哩 目录 1 小目标检测 2 目标检测 3 人体姿态估计 4 图像分割 语义分割 5 工业检测 6 人脸识别 7 自动驾驶 8 目标跟踪 9 动作识别 10 图像分类 11 图像识
  • 基于Matlab的数字图像水印技术

    基于Matlab 的数字图像水印技术 课题介绍 数字水印技术涉及到许多图像处理算法以及数学计算工具等 如果用普通编程工具实现上述算法 需要要花费大量的时间 MathWorks公司推出的一种简单 高效 功能极强的高级语言 MATLAB语言 它
  • 局部最小值问题

    问题 一个数组 相邻不等 返回任意一个局部最小值 重点是 相邻不等 否则无法用此方法 分析 所谓局部最小值 即左右相邻的数都比他大 当此数为第一个时 只需要右边的比他大即可 最右同理 代码 生成随机数组 相邻不等 void Random a
  • B站疯传!堪称最强!java超级面试资料

    我没有知名企业的工作经历 也没有多么耀目的成就 为什么他们会对我有那么深的印象呢 其实 在我看来 面试都是有迹可循的 也就是说 完全可以用很短的时间准备 却给面试官留下很深的印象 一 好的自我介绍决定了面试的80 不管你相不相信 你适不适合
  • DataX理论知识:简介-框架设计-数据抽取策略

    文章目录 一 简介 二 框架设计 三 数据抽取策略 一 简介 DataX 是一个 异构数据源 离线同步工具 可实现 各种 异构数据源 之间 稳定高效的数据同步功能 设计理念 从 蜘蛛网 到 星型链路 DataX充当一个中转站的角色 二 框架
  • 数据分析——数据特征描述、画箱线图、分组直方图

    数据特征描述 import pandas as pd catering sale r H school 数据挖掘 实验 实验二 catering sale xls data pd read excel catering sale index
  • 如何对SQL Server中的tempdb“减肥”

    SQL Server会自动创建一个名为tempdb的数据库作为工作空间使
  • checkstyle:off 使用注释暂时禁用checkstyle检查

    背景 本文介绍在Gradle中 如何跳过checkstyle对指定的文件 或者指定的代码块 的检查 步骤 1 在checkstyle xml的
  • Typescript常见表达式

    Typescript常见表达式 一 析构表达式 destructuring 1 数组析构表达式 用中括号括起来 var array1 1 2 3 4 function doSomething number1 number2 others c
  • Java基础---反射、多线程

    十 反射机制 1 Java反射机制概述 1 1Java Reflection Reflection 反射 是被犯为动态语言的关键 反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息 并能直接操作任意对象的内部属性
  • datetime.time类介绍

    一 time是一个时间类 由时 分 秒 微妙组成 其构造函数如下 class datetime time hour minute second microsecond tzinfo 参数tzinfo 它表示时区信息 各参数的取值范围 hou
  • window安装docker Desktop和wsl2

    目录 一 先到微软商店下载terminal 也就是power shell 后续命令都在这个里面执行 二 安装docker Destop 1 打开控制面板 2 勾选Hyper V服务 3 根据提示重启电脑 等待更新即可 二 启动Docker
  • 字符串去重的5种方式

    public class Demo public static void main String args String str albcad12l gt sfg gt String newStr quChong5 str System o