【发布时间】:2019-02-07 17:07:34
【问题描述】:
我正在编写一个程序来查找 n 个字符串的交集的字符。我编写了以下代码:
import java.util.ArrayList;
import java.util.Scanner;
public class TestJoin {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt(); // no of strings
String s1 =sc.next().toLowerCase();
ArrayList<Character> set1 = new ArrayList<Character>();
while(n-->1)
{
String s2 =sc.next().toLowerCase();
ArrayList<Character> set2 = new ArrayList<Character>();
for(char c : s1.toCharArray()) {
set1.add(c);
}
for(char c : s2.toCharArray()) {
set2.add(c);
}
set1.retainAll(set2);
for(char c : set1)
{
s1=Character.toString(c);
}
}
for(char c :set1)
System.out.println(c);
}
}
当我尝试打印字符时,它给出了错误的输出。
输入-
3
aabcde
abazx
yuabna
预期输出:aab
实际输出:aabb
【问题讨论】:
-
你没有问问题!
-
你所说的“交叉点”是什么意思?你如何从给定的输入中得到
aab?为什么不aba或baa? -
另外请发布一个完整的代码示例,它编译时没有任何错误。
-
@Code-Apprentice 顺序无所谓 (aab,aba,baa) 都是一样的。交集是指所有字符串中的共同字符
-
我建议您退后一步,用文字描述解决问题所需的步骤。这将帮助您弄清楚如何修改代码以遵循这些步骤。那么如果还是有错误的输出,可以使用一些调试技巧来找出问题所在。有关如何调试代码的一些提示,请参阅 ericlippert.com/2014/03/05/how-to-debug-small-programs。