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

时间:2018-01-18 00:55:12

标签: java string replaceall

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

   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");
   }

示例字符串输入: ABAB

输出: 它是一样的

3 个答案:

答案 0 :(得分:2)

如果输入的长度为奇数,则与下半部分的输入不同。

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");
        }
    }

}

}

答案 1 :(得分:1)

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 - &gt; true

abcab - &gt; true

abde - &gt; false

abcde - &gt; false

x - &gt; true

- &GT;真

答案 2 :(得分:0)

您有两种情况:如果字符串的长度为奇数甚至

要检查字符串s是偶数还是奇数,您%的长度是 cB = sFB.charAt(i + length / 2);

要解决您的算法,请将其替换为:

substring

您还可以在String类中使用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

如果您来自其他语言,请使用GameLoopObject检查字符串的内容是否相等。