首页 > 代码库 > 字符串转换:字符串中的'aa'转换成'bb',但是如果是'a'、'aaa'等,则不进行转换

字符串转换:字符串中的'aa'转换成'bb',但是如果是'a'、'aaa'等,则不进行转换

代码:

public void transferString(String str) {    //0.条件初始化    char[] cArr = str.toCharArray();    //将字符串转为字符数组处理    char[] flagArr = new char[cArr.length]; //字符数组标记,判断是否转换    for(int i = 0; i < flagArr.length; i++) { //字符数组初始为0        flagArr[i] = ‘0‘;    }         //1.循环遍历数组,每次处理一个或者一段字符串。    for(int i = 0; i < cArr.length - 1; ) {           //默认处理两个,如果不满足‘aa‘,则处理第一个,如果满足,则处理下面的一段字符           int len = 2;        boolean flag = true; //判断处理标识,为true表示转为b,为false表示不转        char a = cArr[i];        char b = cArr[i+1];        //判断处理        if(a == ‘a‘ && b == ‘a‘) {            //第一个和第二个都是a,判断后面的            int j = i + 2;            while(true) {                if(j == cArr.length) { //如果已经是最后两个字符,不再处理                    break;                }                if(cArr[j] == ‘a‘) {//如果后面的也是‘a‘,则不进行转换                    len += 1;                    j++;                    flag = false; //修改标记                } else {                    break;                }            }            //处理数组标记            for(int k = i; k < i + len; k++) {                if(flag) {                    flagArr[k] = ‘1‘;                } else {                    flagArr[k] = ‘0‘;                }            }            i += len; //修改下标,处理下一段字符串        } else {            flagArr[i] = ‘0‘;            flag = false;            i++;            //如果是倒数第2元素            if(i == (cArr.length - 1)) {                if(flag) {                    flagArr[flagArr.length - 1] = ‘1‘;                }            }        }             }         //对标记数组遍历,转换字符    for(int m = 0; m < flagArr.length; m++){        if(flagArr[m] == ‘1‘) {            cArr[m] = ‘b‘;        }    }         //打印,查看结果    System.out.println(str);    for(char c : cArr) {        System.out.print(c);    }}

 

字符串转换:字符串中的'aa'转换成'bb',但是如果是'a'、'aaa'等,则不进行转换