题目描述:
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
输入:
每一行包括两个字符串,长度不超过100。
输出:
可能有多组测试数据,对于每组数据,
不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
输出连接后的字符串。
样例输入:
abc def
样例输出:
abcdef
来源:
2010年华中科技大学计算机保研机试真题
分析:不用任何函数就直接用一个去重的集合,然后拼接字符串
代码:`package demo2;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
while (input.hasNext()) {
String str1 = input.next();
String str2 = input.next();
//把字符串转化成数组
char[] s1 = str1.toCharArray();
char[] s2 = str2.toCharArray();
String result = solove(s1,s2);
print(result);
}
input.close();
}
private static void print(String result) {
System.out.println(result);
}
private static String solove(char[] s1, char[] s2) {
StringBuffer sb = new StringBuffer();
Set<Character> set = new HashSet<Character>();
if (s1==null && s2 == null ) {
return "";
}
else if (s1 == null && s2 != null) {
for (int i = 0;i<s2.length;i++) {
sb.append(s2[i]);
}
}
else if (s1 != null && s2 == null) {
for (int i = 0;i<s1.length;i++) {
sb.append(s1[i]);
}
} else {//两者都不为空的时候
for (int i = 0;i<s1.length;i++) {
set.add(s1[i]);
}
for (int i = 0;i<s2.length;i++) {
set.add(s2[i]);
}
//循环遍历set拼接字符串
if (set != null && set.size()>0) {
Iterator<Character> it = set.iterator();
while (it.hasNext()) {
sb.append(it.next());
}
}
}
return sb.toString();
}
}
`