问题描述
char []标签=新的char [] {'b','a','a','a','z','a'};
char change;
for (int i=0; i<tab.length-1; i++) {
if (tab[i] == tab[i+1]) {
change = tab[i];
for (int j=0; j<tab.length; j++) {
if (tab[j] == change) {
tab[j] = '*';
}
}
}
}
我只想将角色更改为与自己相邻的星星 结果应该是b *** za
解决方法
每当您看到两个相同的连续字符,然后循环通过将它们设置为''a nd来设置最后一个重复字符,我们将带有prev标志;如果为true,则我们将重复字符设置为最后一个复制到“ ”
char[] tab = new char[] {'b','b','a','z','b'};
char change;
boolean prev=false;
for (int i=0; i<tab.length-1; i++)
{
prev=false;
while(i+1<tab.length && tab[i]==tab[i+1])
{
tab[i++]='*';
prev=true;
}
if(prev)
tab[i]='*';
}
System.out.println(Arrays.toString(tab));
预期输出:
[*,*,z,a,b,*]
,
您快到了。更改以下部分
for (int j=0; j<tab.length; j++) {
if (tab[j] == change) {
tab[j] = '*';
}
}
到
for (int j = i; j < tab.length && tab[j] == change; j++) {
tab[j] = '*';
}
完整代码:
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
char[] tab = new char[] { 'b','a' };
char change;
for (int i = 0; i < tab.length - 1; i++) {
if (tab[i] == tab[i + 1]) {
change = tab[i];
// Start with index,i and replace each element with '*' till tab[j] == change
for (int j = i; j < tab.length && tab[j] == change; j++) {
tab[j] = '*';
}
}
}
System.out.println(Arrays.toString(tab));
}
}
输出:
[b,a]