package mypkg;
import java.util.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args)
{
String str="a_d-kdlssl,d/k\\da";
System.out.println(str);
StringTokenizer st=new StringTokenizer(str,"_-,/\\");
String str2="";
while(st.hasMoreTokens())
{
str2=str2.concat(st.nextToken());
System.out.println(str2);
}
System.out.println("");
//反转的方法↓
System.out.print("Reverse方法: ");
StringBuffer sb=new StringBuffer(str2);
//sb.append(str2);
//sb.reverse();
StringBuffer sb2=new StringBuffer(str2);
System.out.println("After reverse(): sb:"+sb);
System.out.println("sb2: "+sb2);
System.out.println(sb.length());
System.out.println(sb2.length());
if(sb.equals(sb2))
System.out.println("It's equal.");
else
System.out.println("It's not equal");
//反转的方法↑
//普通方法↓
System.out.print("普通方法: ");
int left=0;
int right=str2.length()-1;
boolean equal=false;
while(left<right)
{
if(str2.charAt(left)==str2.charAt(right))
{
left++;
right--;
equal=true;
}
else
{
equal=false;
break;
}
}
if(equal)
System.out.println("It's equal .");
else
System.out.println("It's not equal .");
//普通方法↑
}
}请教下
我用了两个方法来验证是否是回文串(不受符号的扰乱限制)
所以用了StringToken把它重新整理了一次但是用reverse()方法的时侯就出现错误了
明明a_d-kdlssl,d/k\\da 去掉符号后是 adkdlssldkda shi是个回文串 但是用reverse()方法得出的是不相等
import java.util.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args)
{
String str="a_d-kdlssl,d/k\\da";
System.out.println(str);
StringTokenizer st=new StringTokenizer(str,"_-,/\\");
String str2="";
while(st.hasMoreTokens())
{
str2=str2.concat(st.nextToken());
System.out.println(str2);
}
System.out.println("");
//反转的方法↓
System.out.print("Reverse方法: ");
StringBuffer sb=new StringBuffer(str2);
//sb.append(str2);
//sb.reverse();
StringBuffer sb2=new StringBuffer(str2);
System.out.println("After reverse(): sb:"+sb);
System.out.println("sb2: "+sb2);
System.out.println(sb.length());
System.out.println(sb2.length());
if(sb.equals(sb2))
System.out.println("It's equal.");
else
System.out.println("It's not equal");
//反转的方法↑
//普通方法↓
System.out.print("普通方法: ");
int left=0;
int right=str2.length()-1;
boolean equal=false;
while(left<right)
{
if(str2.charAt(left)==str2.charAt(right))
{
left++;
right--;
equal=true;
}
else
{
equal=false;
break;
}
}
if(equal)
System.out.println("It's equal .");
else
System.out.println("It's not equal .");
//普通方法↑
}
}请教下
我用了两个方法来验证是否是回文串(不受符号的扰乱限制)
所以用了StringToken把它重新整理了一次但是用reverse()方法的时侯就出现错误了
明明a_d-kdlssl,d/k\\da 去掉符号后是 adkdlssldkda shi是个回文串 但是用reverse()方法得出的是不相等
String s2 = new String(sb2);
if(s1.equals(s2))
System.out.println("it is equals");
else
...