如何在字符串数组中的重复字符之间输入“ - ”

时间:2016-11-15 19:37:04

标签: java arrays recursion

我正在尝试使用递归遍历String数组并在重复字符之间输入“ - ”。例如:“你好”将输出到“hel-lo”

到目前为止,这是我的代码:

主要类别: 公共课L6C13PairStar {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    PairStar str = new PairStar();
    str.callStars();
}

}

PairStar类:

public class PairStar {

    private String[] strs={"hello","xxaayybbzz","aabbaaccdef","jiladdsqss","g","","allstars"};

    public void callStars()
    {
        for (int i=0; i<strs.length; i++)
            System.out.println(stars(strs[i]));
        System.out.println("*******************************************");
    }

    public String stars(String str)
    {
        String temp = null;
        if (str.length() > 1)
            temp=stars(str.substring(1,str.length()));
        if (temp == null && str.length() > 1)
            temp=str.substring(1);
        if (temp != null)
        {
            for (int i=0; i<str.length(); i++)
            {
                int num = 0;
                int num1 = 1;

                if (str.charAt(num)==str.charAt(num1))
                {

                    str = str.charAt(num) + "-" +str.charAt(num1)+temp; 
                    num++;
                    num1++;
                }
            }
            return str;
        }  
        return str;
    }
}

输出到:

hello,
x-xxaayybbzz,
a-aabbaaccdef,
jiladdsqss,
g,
 ,
allstars
*******************************************

代码仅检查前两个字符是否相同。如何让它继续查看数组的每个部分? 谢谢!

3 个答案:

答案 0 :(得分:0)

  1. 使用StringBuilder累积字符串。
  2. 将输入的第一个字符附加到StringBuilder
  3. 对于字符串中的所有其他字符:
    1. 检查当前字符是否等于前一个字符:如果是,请附加-;
    2. 然后,总是追加当前角色。
  4. 我会让你自己编写代码(如果你在我以前的答案中没有看到它......)

答案 1 :(得分:0)

循环遍历给定的字符串数组,使用toCharArray()将每个字符串放入char数组中并检查重复字符,并使用StringBuilder插入-字符:

    String[] strs = {"hello", "xxaayybbzz", "aabbaaccdef",
        "jiladdsqss", "g", "", "allstars"};
    for (int j = 0; j < strs.length; j++) {
        String str = strs[j];
        char[] chars = str.toCharArray();
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < chars.length; i++) {
            builder.append(chars[i]);
            if (i < chars.length - 1 && chars[i] == chars[i + 1]) {
                builder.append('-');
            }
        }
        strs[j] = builder.toString();
    }

    for (String s : strs) {
        System.out.println(s);
    }

<强>输出:

hel-lo
x-xa-ay-yb-bz-z
a-ab-ba-ac-cdef
jilad-dsqs-s
g

al-lstars

答案 2 :(得分:0)

我会像其他人说的那样使用Stringbuilder,从数组中获取值并使用Stringbuilder为你做脏工作。如果您需要数组中的值,则可以始终将值保存回(覆盖)数组中的值(如果oldValue!= newValue。