下面是我用于查找重复项的 Java 程序.在这里重复输出,我只想重复字符作为输出


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.nextLine();
int count = 0;
// breaking in to characters
char[] str1 = s1.toCharArray();
System.out.println("Duplicate are :");
//creating outer loop for string length
for (int i = 0; i < s1.length(); i++) {
//creating inner loop for comparison
for (int j = i + 1; j < s1.length(); j++) {
//comparing value of i and j
if (str1[i] == str1[j]) {
System.out.println(str1[j]);
System.out.println(count);
//increment after comparison
count++;
break;
}
}
}
sc.close();
}

输出:

aassdesdd
Duplicate are :
a
s
s
d
d

如果您只想打印连续的重复项(即输入"aassdesdd",输出 asd 而不是 assdd(,您可以将内部循环与相等性检查相结合:

for(int i = 0; i < s1.length(); i++) {
for(int j = i + 1; j < s1.length() && str1[i] == str1[j]; j++) {
System.out.println(str1[j]);
}
}

如果您只想打印连续的不同字符,那么您只有一个循环,每次迭代,您只需检查当前和下一个字符即可。如果它们相同,则打印。为了避免再次打印相同的字符,我们可以使用标志。这可以通过单回路来实现

char[] str1 = "aasssdesdd".toCharArray();
boolean flag=true;
for(int i = 0; i < str1.length-1; i++) {
if (flag && str1[i]==str1[i+1])
{
System.out.println(str1[i]);
// we found duplicate, mark the flag as false
flag=false;
continue;
}
flag = true;
}

输出:

a
s
d

演示

相关内容

最新更新