public static void main(String[] args) { String[] str = {"A ","B ","AA ","NN ","ER ","A ","B ","B ","NN ","ER ","BC"}; Set hs = new LinkedHashSet(); for(int i = 0; i < str.length; i ++){ hs.add(str[i]); } System.out.print(hs.toString()); }
public class DemoClass { /** * @param args */ public static void main(String[] args) { String[] str = "A B AA NN ER A B B NN ER BC".split("\\s+"); Set<String> set = new LinkedHashSet<String>(); for(int i = 0; i < str.length; i ++) set.add(str[i]); System.out.print(set); } }
import java.util.*; public class RemoveSame { public static void main(String[] args) { String str = "A B AA NN ER A B B NN ER BC"; System.out.println(removeSameString(str)); } private static String removeSameString(String str) { Set<String> mLinkedSet = new LinkedHashSet<String>(); String[] strArray = str.split(" "); StringBuffer sb = new StringBuffer(); for (int i = 0; i < strArray.length; i++) { if (!mLinkedSet.contains(strArray[i])) { mLinkedSet.add(strArray[i]); sb.append(strArray[i] + " "); } } return sb.toString().substring(0, sb.toString().length()-1); } }
1 先用split 分开 2 放入 set 里面,剔除重复的 3 重新生成结果字符串,
正则替换。 public void getStr(String str){ String newStr=""; str="A B AA NN ER A B B NN ER BC";//亦可接收参数 str=str.trim(); int index;
String[] str = {"A ","B ","AA ","NN ","ER ","A ","B ","B ","NN ","ER ","BC"};
Set hs = new LinkedHashSet();
for(int i = 0; i < str.length; i ++){
hs.add(str[i]);
}
System.out.print(hs.toString());
}
* @param args
*/
public static void main(String[] args) {
String[] str = "A B AA NN ER A B B NN ER BC".split("\\s+");
Set<String> set = new LinkedHashSet<String>();
for(int i = 0; i < str.length; i ++)
set.add(str[i]);
System.out.print(set);
}
}
public class RemoveSame
{
public static void main(String[] args)
{
String str = "A B AA NN ER A B B NN ER BC";
System.out.println(removeSameString(str));
} private static String removeSameString(String str)
{
Set<String> mLinkedSet = new LinkedHashSet<String>();
String[] strArray = str.split(" ");
StringBuffer sb = new StringBuffer(); for (int i = 0; i < strArray.length; i++)
{
if (!mLinkedSet.contains(strArray[i]))
{
mLinkedSet.add(strArray[i]);
sb.append(strArray[i] + " ");
}
}
return sb.toString().substring(0, sb.toString().length()-1);
}
}
2 放入 set 里面,剔除重复的
3 重新生成结果字符串,
String newStr="";
str="A B AA NN ER A B B NN ER BC";//亦可接收参数
str=str.trim();
int index;
while(true){
index=str.indexOf(" ");
if(index==-1){
newStr+=str;
break;
}
String strItem=str.substring(0,index);
newStr+=strItem+" ";
str=str.substring(index);
str=str.replaceAll("( "+strItem+")+ "," ");
str=str.trim();
}
System.out.println(newStr);
}
String[] str="A B AA NN ER A B B NN ER BC".split(" ");
Set<String> set=new HashSet<String>(Arrays.asList(str));
System.out.println(set);
时间复杂度:取决于排序算法,最好为O(nlogn)
空间复杂度:O(n)
String str = "A B AA NN ER A B B NN ER BC CB ERR RER";
// 存储原字符串字符数组
char[] cs = str.toCharArray();
// 存储子字符串字符
char[] sub = new char[str.length()]; // 存储唯一的子字符串
String[] strs = new String[str.length()];
int offset = 0;
for(int i = 0, len = 0; i < cs.length; i++) {
if(cs[i] != ' ') {
sub[len++] = cs[i];
if(i != cs.length - 1) {
continue;
}
}
if(len == 0) {
continue;
}
// 获得非空格子串
String substring = new String(sub, 0, len);
strs[offset++] = substring;
// 找出当前串后的字符串,并将其置为空格
for(int j = i + 1, slen = substring.length(), m = cs.length - slen + 1; j < m; j++) {
if(cs[j] == ' ') {
continue;
}
boolean b = substring.equals(new String(cs, j, slen)) && cs[j - 1] == ' ';
b = (b && j + slen <= m) ? (b && cs[j + slen] == ' ') : b;
if(b) {
for(int k = j; k < j + len; k++) {
cs[k] = ' ';
}
}
}
len = 0;
}
// 输出
for(int i = 0; i < offset; i++) {
if(i > 0) {
System.out.print(" ");
}
System.out.print(strs[i]);
}
System.out.println();
}
}