将字符串中所有的*移动到左边
1.使用冒泡排序的方式,冒泡是稳定的,可以保证字符的顺序
public void removeLeftAndRight(char[] a)
{
for(int i=0;i<a.length;i++)
{
for (int j=a.length-1;j>i;j--)
{
if(a[j]=='*'){
char temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}
}
}
}
2.从后往前扫描遇到字符就放到数组后面相应的位置,前面剩余的位置,补上*即可
public void removeLeftAndRightn(char[] a)
{
int len=a.length;
for(int i=len-1;i>=0;i--)
{
if(a[i]!='*')
{
a[--len]=a[i];
}
}
for(int i=len-1;i>=0;i--)
{
a[i]='*';
}
}
统计字符出现的次数
利用数组,数组下标代表字母,如0代表A,依次类推。然后存储出现的次数
public void countChar(char[] a)
{
int[] result=new int[52];
for (int i=0;i<a.length;i++)
{
result[a[i]-'A']++;
}
for(int i=0;i<result.length;i++)
{
System.out.println((char) ('A'+i)+":"+result[i]);
}
}
压缩字符串中的空格,如果有两个空格则压缩成一个空格
利用两个指针,如果第一个指针遇到了空格,则判断第二指针是否是空格,直到第二个指针不为空格,则将前一个指针的值放到新数组里
public String compressBlank(char[] a)
{
if(a==null)
{
return a.toString();
}
StringBuilder stringBuilder=new StringBuilder();
for (int i=0;i<a.length;i++)
{
//a[i]是空格才进一步判断,否则直接放到新数组里
if(a[i]==' ')
{
//碰到连续的空格,则继续
if((i+1)<a.length&&a[i+1]==' ')
{
continue;
}else {
stringBuilder.append(a[i]);
}
}else {
stringBuilder.append(a[i]);
}
}
return stringBuilder.toString();
}