Java 字符串上的操作
我正在尝试为以下字符串操作编写代码: 1反转字符串。 这就是我所拥有的:Java 字符串上的操作,java,recursion,Java,Recursion,我正在尝试为以下字符串操作编写代码: 1反转字符串。 这就是我所拥有的: String rev = ""; String reverse(String s){ if(s.length() == 1){ return s; } else { rev += s.charAt(s.length()-1)
String rev = "";
String reverse(String s){
if(s.length() == 1){
return s;
}
else {
rev += s.charAt(s.length()-1)
+reverse(s.substring(0,s.length()-1));
return rev;
}
}
2如果两个字符串彼此相等
int compareString(char a, char b, int n){
if (n == 0 || a == 0 || a != b){
return a - b;
}
else {
return(compareString(a+1, b+1, n-1));
}
}
3如果字符串是回文,例如eye或racecar,则向前和向后读取相同的内容
boolean checkPalindrome (String s){
if(s.length() == 0 || s.length() == 1){
return true;
}
if(s.charAt(0) == s.charAt(s.length()-1)){
return checkPalindrome (s.substring(1, s.length()-1));
}
return false;
}
我不清楚2号。作为递归思维的练习,我只喜欢递归技术和上面的更正。多谢各位
如果两个字符串彼此相等
int compareString(char a, char b, int n){
if (n == 0 || a == 0 || a != b){
return a - b;
}
else {
return(compareString(a+1, b+1, n-1));
}
}
比较两个字符串时,必须传入字符串
public static boolean isEquals(String a, String b) {
if (a.length() != b.length()) return false;
return isEquals(a, b, 0);
}
private static boolean isEquals(String a, String b, int index) {
if (index >= a.length()) return true;
if (a.charAt(index) != b.charAt(index)) return false;
return isEquals(a, b, index + 1);
}
或者如果性能不重要
public static boolean isEquals(String a, String b) {
if (a.length() == 0)
return b.length() == 0;
if (b.length() == 0)
return false;
return a.charAt(0) == b.charAt(0) &&
isEquals(a.subString(1), b.subString(1));
}
如果你只是不清楚第二部分,那应该是唯一的问题。现在,当您只提供两个字符时,您希望如何比较两个字符串?请仅对问题使用适当的标记。例如,上面的代码属于Java而不是C。如果您想要/需要C或其他语言的响应,请用所需语言发布此类问题;在方法内部,看看调用reverse两次会发生什么。我不清楚这不是一个可以解决的问题。请告诉我们在实际数据示例中哪些有效,哪些无效,并提出具体问题。对于第二个选项,如果性能无关紧要,则是非常正确的说法,因为子字符串复制了Java 8中的底层数组。