如何检查字符串的前半部分是否与字符串的后半部分相同?(不要与回文混淆(这是我到目前为止的代码。
Scanner oIn = new Scanner (System.in);
String sFB = oIn.nextLine();
int length = sFB.length();
boolean bYes = true;
char cA, cB;
for (int i = 0; i < length/2; i++){
cA = sFB.charAt(i);
cB = sFB.charAt(/*what do i put here?*/);
if (cA != cB){
bYes = false;
break;
}
}
if (bYes) {
System.out.println("It's the same");
}
else {
System.out.println("It's not the same");
}
示例字符串输入:阿巴布
输出:这是相同的
如果您的输入长度为奇数,则与后半部分不同。
if(sFB.length()%2!=0){
System.out.println("It's not the same");
}
完整的代码如下。
public class StringEqualsSecondHalf {
public static void main(String[] args) {
String sFB="String";
if(sFB.length()%2!=0){
System.out.println("Its not same");
}
else{
String firstHalf=sFB.substring(0,sFB.length()/2);
System.out.println("First Half "+firstHalf);
String secondHalf=sFB.substring(sFB.length()/2,sFB.length());
System.out.println("Second Half "+secondHalf);
if(firstHalf.equals(secondHalf)){
System.out.println("They are same");
}
else{
System.out.println("They are not same");
}
}
}
}
public static boolean halfEquals(String string) {
char[] stringArray = string.toCharArray();
int firstHalfEnd = (stringArray.length / 2);
int seconHalfStart = (stringArray.length / 2) + (stringArray.length % 2);
for (int position = 0; position < firstHalfEnd; position++) {
if (stringArray[position] != stringArray[position + seconHalfStart]) {
return false;
}
}
return true;
}
String.toCharArray(( 是键,比 charAt(( 简单得多。
编辑输出:
abab ->true
阿爸 ->真
阿布德 ->假
ABCDE ->false
x ->真
->真实
您有两种情况:如果字符串的长度是奇数或偶数。
要检查字符串s
是偶数还是奇数,请%
它的长度。
要解决您的算法,请将其替换为以下内容:
cB = sFB.charAt(i + length / 2);
还可以在 String 类中使用substring
。
你可以用substring
来获得上半场和下半场。
public static boolean sameAsHalf(String s){
if(s.length() == 1){
return true;
}
if(s.length() % 2 == 0){
String firstHalf = s.substring(0, s.length()/2);
System.out.println(firstHalf);
String secondHalf = s.substring(s.length()/2);
System.out.println(secondHalf);
return firstHalf.equals(secondHalf);
}
return false;
}
如果您来自其他语言,请使用 equals
检查字符串的内容是否相等。