题目:
一个字符串(如:okttttwokkkrld),实现去掉相邻的重复字符(得到结果:okworld)
代码:
public class Test {
public static void main(String[] args) {
// 测试数据
String str = "okttttwokkkrld";
// 把相邻的重复字符变成null存入list中
List<Character> list = new ArrayList<>();
for (int i = 0; i < str.length(); i++) {
list.add(str.charAt(i));
if (i > 0 && str.charAt(i - 1) == str.charAt(i)) {
list.set(i - 1, null);
list.set(i, null);
}
}
// 把list中除null之外的字符都存入sb中
StringBuilder sb = new StringBuilder();
for (Character ch : list) {
if (ch != null) sb.append(ch);
}
// 输出最终结果
System.out.println(sb.toString());
}
}
结果:
okworld
解释:
我的这种思想是把字符串中的所有字符放到一个集合中,然后通过遍历字符串找到那些相邻的重复字符,然后把这些重复字符都赋值成null,最终使用StringBuffer进行字符串的拼接,其中去掉那些为null的;如果你不想去掉全部,只想去掉后面那些重复的,就可以把list.set(i-1, null);去掉就可以了