如何检查字符串的前半部分是否与字符串的后半部分相同



如何检查字符串的前半部分是否与字符串的后半部分相同?(不要与回文混淆(这是我到目前为止的代码。

   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 检查字符串的内容是否相等。

最新更新