试图解决"有效回文的问题"下面是代码。当我将stringbuffer转换为字符串和小写时,字符串将被打印为全部小写字母,但是当我使用s.charAt(i)进行比较时,我也会得到大写字母。
public static void main(String []args){
String s = "aA";
String[] strings = s.split("[^A-Za-z0-9]");
StringBuffer sb = new StringBuffer();
for(int i =0; i<strings.length;i++){
sb.append(strings[i]);
}
String newString = sb.toString().toLowerCase();
System.out.println("New String "+newString);***// output : aa(lower case)***
for(int i =0; i<newString.length()/2;i++){
if(s.charAt(i) != s.charAt(newString.length()-i-1)){
System.out.println(s.charAt(i));//**output 'a**
System.out.println(s.charAt(newString.length()-i-1));//***output 'A'***
}
}
有人可以解释一下原因吗?
答案 0 :(得分:1)
您没有修改s
,小写字符串位于newString
。您需要将第二个变量替换为:
for(int i =0; i<newString.length()/2;i++){
if(newString.charAt(i) != newString.charAt(newString.length()-i-1)){
System.out.println(s.charAt(i));//**output 'a**
System.out.println(s.charAt(newString.length()-i-1));//***output 'A'***
}
}
答案 1 :(得分:0)
如果您愿意使用小写,请使用image.Image
变量而不是字符串newString
;
s
}
如果您打算检查回文,那么以下可以是一个解决方案。
for(int i =0; i<newString.length()/2;i++){
if(newString.charAt(i) != newString.charAt(newString.length()-i-1)){
System.out.println(newString.charAt(i));
System.out.println(newString.charAt(newString.length()-i-1));
}