您好,我需要一些緊急幫助。我試圖讓我的代碼不僅搜索陣列中是否存在字符,而且搜索它是否彼此相鄰。所以如果輸入是hanah,輸出應該是hanah。如果它靠近同一個字符,它應該只洗掉一個字符。
import java.util.*;
public class test {
static void removeDuplicate(char str[], int length) {
int index = 0;
for (int i = 0; i < length; i ) {
int j;
for (j = 0; j < i; j ) {
if (str[i] == str[j])
{
break;
}
}
if (j == i)
{
str[index ] = str[i];
}
}
System.out.println(String.valueOf(Arrays.copyOf(str, index)));
}
public static void main(String[] args) {
String info = "hannahmontana";
char str[] = info.toCharArray();
int len = str.length;
removeDuplicate(str, len);
}
}
uj5u.com熱心網友回復:
這是我的解決方案
static String removeDuplicate(char str[], int length) {
if (length == 0) return "";
List<Character> list = new ArrayList<>();
list.add(str[0]);
for (int i = 1; i < length; i ) {
if (list.get(list.size() - 1) != str[i]) {
list.add(str[i]);
}
}
return list.stream()
.map(Object::toString)
.collect(Collectors.joining());
}
uj5u.com熱心網友回復:
您可以在這里進行遞回呼叫:
import java.util.*;
public class test {
static String removeDuplicate(String input) {
if(input.length()<=1)
return input;
if(input.charAt(0)==input.charAt(1))
return removeDuplicate(input.substring(1));
else
return input.charAt(0) removeDuplicate(input.substring(1));
}
public static void main(String[] args) {
String info = "hannahmontana";
System.out.println(removeDuplicate(info));
}
}
uj5u.com熱心網友回復:
您也可以嘗試正則運算式。也許不是那么快,但我認為它更簡單,更具可讀性。
static String removeDuplicate(char[] chars, int ignored) {
return new String(chars).replaceAll("(.)\\1 ", "$1")
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/482055.html
