Java 减少大写或小写之前的重复单词
主要 阶级Java 减少大写或小写之前的重复单词,java,Java,主要 阶级 我正在努力消除重复的字母,例如Hello将是Hello。我已经做到了,但是,我想要实现的是,不管它是大写还是小写,它仍然会被归类为一个副本,所以呵呵就是他,而不是呵呵。我应该。平等。。。每封信或每封信都有一个有效的方法吗?很抱歉问你们这是不是一个简单的问题 您可以使用大写和小写字符进行两次检查: public class Dupe {
我正在努力消除重复的字母,例如Hello将是Hello。我已经做到了,但是,我想要实现的是,不管它是大写还是小写,它仍然会被归类为一个副本,所以呵呵就是他,而不是呵呵。我应该。平等。。。每封信或每封信都有一个有效的方法吗?很抱歉问你们这是不是一个简单的问题 您可以使用大写和小写字符进行两次检查:
public class Dupe
{
public static String Eliminate(String input)
{
char[] chrArray = input.toCharArray();
String letter ="";
for (char value:chrArray){
if (letter.indexOf(value) == -1){
letter += value;
}
}
return letter;
}
}
这将替换所有重复字符,无论序列中有多少个重复字符
public static String Eliminate(String input)
{
char[] chrArray = input.toCharArray();
String letter ="";
for (char value:chrArray){
if (letter.indexOf(value.toLowerCase()) == -1 && letter.indexOf(value.toUpperCase()) == -1){
letter += value;
}
}
return letter;
}
如果您正在寻找重复项,如:abacd以替换两个a,请按照Pattern.compile.[0-9A-Za-z]\\1+.中给出的正则表达式尝试此操作。这可能不是最有效的方法,但您可以尝试一下
public static void main(String[] args)
{
String duped = "aaabbccddeeffgg";
final Pattern p = Pattern.compile("(\\w)\\1+");
final Matcher m = p.matcher(duped);
while (m.find())
System.out.println("Duplicate character " + (duped = duped.replaceAll(m.group(), m.group(1))));
}
下面是另一种有状态的方法:-
public class Main
{
public static void main(String[] args)
{
System.out.println(Dupe.Eliminate("Testing UppeR and loweR"));
}
}
class Dupe
{
public static String Eliminate(String input)
{
char[] chrArray = input.toCharArray();
String letter ="";
for(int index = 0; index < chrArray.length; index++)
{
int j = 0;
boolean flag = true;
//this while loop is used to check if the next character is already existed in the string (ignoring the uppercase or lowercase)
while(j < letter.length())
{
if((int)chrArray[index] == letter.charAt(j) || (int)chrArray[index] == ((int)letter.charAt(j)+32) ) //32 is because the difference between the ascii value of the uppercase and lowercase letter is 32
{
flag = false;
break;
}
else
j++;
}
if(flag == true)
{
letter += chrArray[index];
}
}
return letter;
}
}
输出:他难道他不应该成为他吗?哦,是的,对不起,你想删除每个单词中的重复字母,还是整个句子中的重复字母?i、 对于Foo-dumble,你想要Foo-lish还是Fo-folish?如果不是很有效,最简单的方法是:if-letter.toLowerCase.indexOfCharacter.toLowerCasevalue=-1
public class Main
{
public static void main(String[] args)
{
System.out.println(Dupe.Eliminate("Testing UppeR and loweR"));
}
}
class Dupe
{
public static String Eliminate(String input)
{
char[] chrArray = input.toCharArray();
String letter ="";
for(int index = 0; index < chrArray.length; index++)
{
int j = 0;
boolean flag = true;
//this while loop is used to check if the next character is already existed in the string (ignoring the uppercase or lowercase)
while(j < letter.length())
{
if((int)chrArray[index] == letter.charAt(j) || (int)chrArray[index] == ((int)letter.charAt(j)+32) ) //32 is because the difference between the ascii value of the uppercase and lowercase letter is 32
{
flag = false;
break;
}
else
j++;
}
if(flag == true)
{
letter += chrArray[index];
}
}
return letter;
}
}
String s = "Hehe";
Set<String> found = new TreeSet<>(String.CASE_INSENSITIVE_ORDER);
String result = s.chars()
.mapToObj(c -> "" + (char) c)
.filter(found::add)
.collect(Collectors.joining());
System.out.println(result);