当且仅当 1 和 0 并排重复多次时,我需要打印 1 和 0 字符串中元素的索引。
例如: 输入:“0010011” 输出:“0,3,5”
重复从索引 0、3 和 5 开始。
这是我目前拥有的
Scanner keyboard = new Scanner(System.in);
ArrayList runs = new ArrayList();
System.out.println("Enter non empty string of 1s and 0s");
String input = keyboard.nextLine();
char[] array = input.toCharArray();
for(int i = 0; i < input.length(); i++)
{
if(array[i] == array[i++])
{
runs.add(i);
}
}
for(int i = 0; i<= array.length; i++)
{
System.out.println(runs);
}
当我测试这个时,我尝试输入“00100”并得到“1,3,5”的输出。再测试一下上面输入“0010011”,得到“1,3,5,7”。它似乎打印奇数,而不是数字开始重复的索引。谁能发现我做错了什么吗?我有一种感觉,它来 self 在第一个 for 循环中的比较。
最佳答案
这应该有效:
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter non empty string of 1s and 0s");
String input = keyboard.nextLine();
char lastChar = '~'
for(int i=0; i<input.length() - 1; i++) {
if(input.charAt(i) == input.charAt(i + 1) && (i == 0 || input.charAt(i) != input.charAt(i - 1))) {
System.out.println(i);
}
}
关于java - 如何比较单个字符串中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22233708/