lz 你好
这个就是一个比较简单的算法题 , 你可以自己写
但是用Java语言就不需要了 , Java自带泛型相关的类 , 很有用
其中TreeSet集合能自动识别添加的是否重复 , 重复的将不会添加 , 很方便
以下是实现代码:
import java.util.Listimport java.util.Scanner
public class DeleteRepeated {
private String str
private TreeSet<String> 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.*class This {
public static void main(String[] args) {
String a="06-104,07-104,06-104,07-104,03-103,04-103,03-103,04-103,05-102,"
a = a.replaceAll("^,*|,*$",",")
String reg = "(,[^,]+,).*\\1+"
while(a.matches("^.*" + reg + ".*$")){
a = a.replaceAll(reg,"$1")
}
a = a.replaceAll("^,+|,+$","")
System.out.println(a)
}
}
1.一般会想到遍历字符串,去除重复的字符,这样时间复杂度是O(n²),时间复杂度太高。
static String sub(String str){
StringBuffer result =newStringBuffer()
List list =new ArrayList()
char[] cs = str.toCharArray()
for(int i=0i<cs.lengthi++){
if(!list.contains(cs[i])){
result.append(cs[i])
list.add(cs[i])
}
}
returnresult.toString()
}
2.再仔细想一想
用java的String的indexOf方法来达到字符串去重的目的,indexOf的功能是返回指定字符在此字符串中第一次出现处的索引:
public static String QuChong(String str){
StringBuilder sb=new StringBuilder()
for(int i=0i<str.length()i++){
if(str.indexOf(str.charAt(i))==i){
//第一次出现
sb.append(str.charAt(i))
}
}
String result=sb.toString()
return result
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)