我需要帮助来确定如何从字符串中删除重复字符.它必须以递归方式完成,这才是真正的问题.
public class FEQ2 {
/**
* @param args
*/
public static void removeDups(String s, int firstChar, int secondChar) {
if (s.length() == 1) {
System.out.println(s);
}
char a = s.charAt(firstChar);
if (a == s.charAt(secondChar)) {
s = a + s.substring(secondChar + 1);
}
System.out.println(s);
removeDups(s, firstChar + 1, secondChar + 1);
//return s;
}
public static void main(String[] args) {
//System.out.println(removeDups("AAAABBARRRCC", 1));
removeDups("AAAABBARRRCC", 0 , 1);
}
}
解决方法:
你可以这样做:
public static String removeDups(String s)
{
if ( s.length() <= 1 ) return s;
if( s.substring(1,2).equals(s.substring(0,1)) ) return removeDups(s.substring(1));
else return s.substring(0,1) + removeDups(s.substring(1));
}
INPUT: "AAAABBARRRCC"
OUTPUT: "ABARC"
===============
编辑:另一种方式
public static String removeDups(String s)
{
if ( s.length() <= 1 ) return s;
if( s.substring(1).contains(s.substring(0,1)) ) return removeDups(s.substring(1));
else return s.substring(0,1) + removeDups(s.substring(1));
}
INPUT: "AAAABBARRRCC"
OUTPUT: "BARC"
==============
编辑:第三种方式
public static String removeDups(String s)
{
if ( s.length() <= 1 ) return s;
if( s.substring(0,s.length()-1).contains(s.substring(s.length()-1,s.length())) ) return removeDups(s.substring(0,s.length()-1));
else return removeDups(s.substring(0,s.length()-1)) + s.substring(s.length()-1,s.length());
}
INPUT: "AAAABBARRRCC"
OUTPUT: "ABRC"
标签:java
来源: https://codeday.me/bug/20190531/1187478.html