如何检查字符串的前半部分是否与字符串的后半部分相同? (不要与回文混淆)这是我的代码到目前为止。
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
输出: 它是一样的
答案 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
检查字符串的内容是否相等。