Java 确定重复字符在字符串中的位置,并在它们之间添加连字符

Java 确定重复字符在字符串中的位置,并在它们之间添加连字符,java,string,Java,String,我知道有人问过类似的问题,但没有一个答案足以回答我想要得到的。我想写一个程序,它接受一个字符串并将该字符串传递给一个方法。一旦它被传递给该方法,该方法将通过该字符串搜索,找到重复字符出现的位置,并在它们之间添加连字符。我只想使用java api中的charAt()、length()和or substring()方法。只是澄清一下,如果字符串“Hello”被传递给我的方法,那么该方法将返回“Hel-lo”。我在下面写了一些代码 public class SeperateDuplicates {

我知道有人问过类似的问题,但没有一个答案足以回答我想要得到的。我想写一个程序,它接受一个字符串并将该字符串传递给一个方法。一旦它被传递给该方法,该方法将通过该字符串搜索,找到重复字符出现的位置,并在它们之间添加连字符。我只想使用java api中的charAt()、length()和or substring()方法。只是澄清一下,如果字符串“Hello”被传递给我的方法,那么该方法将返回“Hel-lo”。我在下面写了一些代码

public class SeperateDuplicates
{
   public static void main(String[] args)
   {

      System.out.println(seperateDuplicatesChars("Hello"));
      /*System.out.println(seperateDuplicatesChars("Bookkeeper"));
      System.out.println(seperateDuplicatesChars("Yellowwood door"));
      System.out.println(seperateDuplicatesChars("Chicago Cubs"));
      */
   }

   public static String seperateDuplicatesChars(String str)
   {
      char[] arr = new char[str.length()];

      for(int i = 0; i < arr.length; i++)
      {
         arr[i] = str.charAt(i);
      }

      int counter = 0;

      for(int i = 0; i < arr.length; i++)
      {
         counter++;
         if(arr[i] == arr[i+1])
         {
            counter++;
         }

      }


   }
公共类独立副本
{
公共静态void main(字符串[]args)
{
System.out.println(分别是duplicateschars(“Hello”));
/*System.out.println(单独的副本管理员(“簿记员”);
System.out.println(单独的复制品(“黄木门”);
System.out.println(单独的复制体(“芝加哥小熊”);
*/
}
公共静态字符串分隔重复项(字符串str)
{
char[]arr=新字符[str.length()];
对于(int i=0;i

}你很接近了。只需创建一个新字符串,并在循环使用char数组时返回该字符串。如果需要添加连字符,也可以添加

如果您指定它修改
字符串
,但
字符串
java
中不可修改,并且每次插入或删除字符时,都会创建一个新的字符串对象。这就是为什么在一般情况下,要创建新字符串,必须使用
StringBuilder
。您可以从这个类的JavaDoc获得更多信息

public static String separateDuplicatesChars(String str) {
    if (str == null)
        return null;
    if (str.trim().isEmpty())
        return str;

    char prv = '\0';
    StringBuilder buf = new StringBuilder(str.length());


    for (int i = 0; i < str.length(); i++) {
        char ch = str.charAt(i);

        if (prv == ch)
            buf.append('-');

        buf.append(ch);
        prv = ch;
    }

    return buf.toString();
}

@Iserbius不是家庭作业,是java语言的新手程序员,正在努力提高它,在字符串方面有困难。无论如何,谢谢你的帮助。谢谢你的努力。您能向我们展示一下您在这方面所做的一些工作吗。@pro5476您应该阅读,而不是因为强制执行网站规则和指南而称其他人为“粗鲁”——您的问题可能会得到更好的结果。只使用length()、charAt()和substring方法怎么样
public static String separateDuplicatesChars(String str) {
    if (str == null)
        return null;

    int size = str.length();
    int[] letters = new int[26];

    for (int i = 0; i < str.length(); i++) {
        char ch = str.charAt(i);
        char base = ch >= 'A' && ch <= 'Z' ? 'A' : ch >= 'a' && ch <= 'z' ? 'a' : '\0';

        if (base == '\0')
            continue;

        int letter = str.charAt(i) - base;

        if (letters[letter] != 0)
            size++;

        letters[letter]++;
    }

    char[] arr = new char[size];

    for (int i = 0, j = 0; i < str.length(); i++, j++) {
        char ch = str.charAt(i);

        if (i > 0 && arr[i - 1] == ch)
            arr[j++] = '-';

        arr[j] = ch;
    }

    return new String(arr);
}