重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
set 本身就可以去除相同的元素 ! 没有必要用list
创新新互联,凭借10余年的做网站、成都网站制作经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有上千案例。做网站建设,选创新互联建站。
import java.util.*;
public class Test {
public static void main(String[] args){
String str="This is a String";
String sbr="isaring";
Set set = new HashSet();
for(char c:str.toCharArray())
{
set.add(c);
}
for(char c:sbr.toCharArray())
{
set.add(c);
}
System.out.println(set);
}
}
[g, T, , t, s, r, S, a, n, h, i]
你的代码里面:list.add(sbr.substring(j,j+1));
我觉得应该是list.add(sbr.charAt(j));//把相同的加进来,然后再去除这些相同的就是不同的了
lz 你好
这个就是一个比较简单的算法题 , 你可以自己写
但是用Java语言就不需要了 , Java自带泛型相关的类 , 很有用
其中TreeSet集合能自动识别添加的是否重复 , 重复的将不会添加 , 很方便
以下是实现代码:
import java.util.List;
import java.util.Scanner;
public class DeleteRepeated {
private String str;
private TreeSetString noReapted;//带有String类型的TreeSet泛型
public DeleteRepeated() {
Scanner in = new Scanner(System.in);
System.out.println ("输入一个字符串:");
str = in.nextLine();
noReapted = new TreeSet();
}
//清楚重复的数据
public void removeRepeated(){
for (int i = 0; i str.length(); i++){
noReapted.add(""+str.charAt(i));
//str.charAt(i)返回的是char型 所以先加一个""空格 , 转换成String型
//TreeSet泛型能保证重复的不加入 , 而且有序
}
str = "";
for(String index:noReapted){
str += index;
}
//输出
System.out.println (str);
}
public static void main(String[] args) {
DeleteRepeated dr = new DeleteRepeated();
dr.removeRepeated();
}
}
运行截图:
希望能帮助你哈
import java.util.ArrayList;
import java.util.List;
public class $ {
public static void main(String[] args) {
String str = "教练教练裁判裁判裁判运动员运动员";
ListString data = new ArrayListString();
for (int i = 0; i str.length(); i++) {
String s = str.substring(i, i + 1);
if (!data.contains(s)) {
data.add(s);
}
}
String result = "";
for (String s : data) {
result += s;
}
System.out.println(result);
}
}
教练裁判运动员
package problem;
public class Nonrepeat {
public static String delRepeat(String str) {
char[] arr = str.toCharArray();
StringBuffer target = new StringBuffer();
boolean blDigit = false;
char nextChar = 0;
for (char c : arr) {
if (isDigit(c)) {
target.append(c);
blDigit = true;
} else if (!blDigit) {
target.append(c);
} else if (nextChar == 0 blDigit) {
target.append(c);
nextChar = c;
} else if (blDigit c != nextChar) {
target.append(c);
blDigit = false;
nextChar = 0;
} else if (blDigit c == nextChar) {
blDigit = false;
nextChar = 0;
}
}
return target.toString();
}
private static boolean isDigit(char c) {
if (c '0' c '9')
return true;
return false;
}
public static void main(String[] args) {
String s = "ss2ss15ddddsdf";
System.out.println(delRepeat(s));
}
}
举例:
1、String str = "abcdeabcdeabcdeaaaaaadddddceeeeabcccccccacadaeec";
str = str.replaceAll(reg, "");
System.out.println(str);
2、str = str.replaceAll("(?s)(.)(?=.*\\1)", "");
(?s)(.)(?=.*\1)
3、(?s) 开启单行模式 DOTALL 让. 号匹配任意字符
(.) 任意字符 并捕获在第一组
(?=.*\1) 这是断言, 表示后面内容将是 任意个字符加上第一组所捕获的内容
这样,如果这整个式子匹配到,表示,第一个捕获组内容在字符串中,至少出现两次,替换为 "" 空串.
进行 全局替换后, 整个字符串所出现的字符将不重复。
另外:
正则表达式默认是从左向右匹配, java中似乎没有逆向匹配的选项
所以你可以先反转字符串, 然后replace, 然后再反转
如下
先通过标点符号分词,然后去掉重复的词语。
String str=“人、药物、疾病、药物、疾病、人、药物、”;
String[] ss=str.split("、");
MapString,Boolean sm=new HashMapString,Boolean();
ListString l=new ArrayListString();
for(String s:ss){
if(!sm.containsKey(s)){
l.add(s);
sm.put(s,true);
}
最后l就是你去掉重复的词组之后所得的文本。组合起来就行了。
}