这是我到目前为止所做的递归,但它似乎不正确,这主要是出于兴趣。任何帮助或提示将不胜感激。
public class CompareStrings {
public static boolean match(String x, String y) {
//turn each string into a char[], sort that array,
//then compare the two Simple
char[] first = x.toCharArray();
char[] second = y.toCharArray();
java.util.Arrays.sort(first);
java.util.Arrays.sort(second);
String sorted_str1 = new String(x);
String sorted_str2 = new String(y);
if(sorted_str1.equals(sorted_str2)){
return true;
}
else{
return false;
}
}
public static void main(String args[]) {
System.out.println(match("hello", "hello.")); // should return false
System.out.println(match("hello", "jello")); // should return false
System.out.println(match("hello", "h@llo")); // should return true
System.out.println(match("hello", "h@@@@")); // should return true
System.out.println(match("hello", "h*")); // should return true
System.out.println(match("hello", "*l*")); // should return true
System.out.println(match("anyString", "*")); // should return true
}
}
答案 0 :(得分:1)
你必须记住,如果你想使用 Recursion ,你必须在自己内部使用你的函数。看看和例子:
void myMethod( int counter)
{
if(counter == 0)
else
{
System.out.println("hello" + counter);
myMethod(--counter);
System.out.println(""+counter);
}
}
我的功能是myMethod,我在其中使用它。但是你没有这样做,所以你没有使用递归。
答案 1 :(得分:1)
我不知道递归,但为什么不做一些像
这样简单的事情public static boolean match(String x, String y) {
return x.matches(y.replace("@", ".").replace("*", ".*"));
}
在regex-land中,
.
匹配任何字符X*
匹配X
0次或以上 .*
匹配任何字符串,包括空字符串根据您的示例判断,您希望@
匹配单个字符,*
匹配任何字符串。因此,我们将@
中的所有y
替换为.
,并将所有*
替换为.*
,并将结果字符串用作正则表达式,然后检查如果x
与之匹配。
System.out.println(match("hello", "hello."));
System.out.println(match("hello", "jello"));
System.out.println(match("hello", "h@llo"));
System.out.println(match("hello", "h@@@@"));
System.out.println(match("hello", "h*"));
System.out.println(match("hello", "*l*"));
System.out.println(match("anyString", "*"));
false false true true true true true