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