将字符串减少到最短

Reduce string to shortest

我正在尝试将字符串缩减为最短的字符串。在 for 循环中,我使用 str2.charAt( i ) == str2.charAt( i + 1 ) 检查所有字符并使用 str2 = str2.substring ( 0 , i ) + str2.substring ( i + 2 ); 创建新字符串,然后使用 i=0 检查新字符串。但是,我不能对大写和小写都这样做。我的意思是,例如,

输入: aabcddef

输出: bcef

没问题,但是

输入: AabcddeFf

输出: AabceFf

在这种情况下,我需要得到输出:bce。我无法使用 equalsIgnoreCase() 方法。我该如何解决?

当像你这样比较时,A 不等于 a,你可以通过忽略大小写来检查相等性,你可以通过将两者都设置为大写来做到这一点

if (Character.toUpperCase(str2.charAt(i)) == Character.toUpperCase(str2.charAt(i + 1))) {
    str2 = str2.substring(0, i) + str2.substring(i + 2);
    i = 0;
}