黑马程序员技术交流社区
标题:
自写的《判断是否为对称字符串》感觉太杂了,大牛来吧
[打印本页]
作者:
lzh2015
时间:
2015-5-10 15:03
标题:
自写的《判断是否为对称字符串》感觉太杂了,大牛来吧
import java.util.Scanner;
//注释的部分原来只能判输入断奇数位的,改进后奇数偶数的都可以判断了,不过感觉不够精炼
public class ArrrayToll {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
a: while (true) {
System.out.println("请输入要检验的对称字符串字母,格式:abcde 无任何符号");
String str = sc.nextLine();
char[] ch = str.toCharArray();
b: for (;;) {
for (int i = 0; i < ch.length; i++) {
int j = ch.length - 1 - i;
while (ch[i] != ch[j]) {
System.out.println("您输入的字母串为 '非' 对称字母串");
break b;
/*
* if (ch[i] != ch[j]) {
* System.out.println("您输入的字母串为 '非' 对称字母串"); break//原来for 那有个标记结束for,改进后去掉了 ;
* } else
* if (ch[i]==ch[j]&&i==j) {
* System.out.println("您输入的字母串为对称字母串"); break ; }
*/
}
}
System.out.println("您输入的字母串为对称字母串");
break b;
}
}
}
}
复制代码
作者:
fantacyleo
时间:
2015-5-10 15:42
对长度为n的字符串,依次判断下标为0和n-1的字符是否相同、下标为1和n-2的字符是否相同......直至判断下标为n/2 - 1和n/2 + 1的字符是否相同。此方法对n为奇偶都适用
String s = "aabaa";
int mid = s.length() / 2;
for (int i = 0; i < mid; i++) {
if (s.charAt(i) != s.charAt(s.length() - 1 - i))
return false;
}
return true;
复制代码
作者:
大西洋
时间:
2015-5-10 20:07
学习!
第一次看到 a: while(true) 这样的写法,break a 就退出了循环~
敢问大神,您是怎样想到这个对比算法的??求思路。
int j = ch.length - 1 - i ; // 这句是什么含义呢?请指教,谢谢!
作者:
thoris
时间:
2015-5-10 22:57
不是把字符串reverse一下 和原来equals一下就可以了么
作者:
0416-孙磊
时间:
2015-5-10 23:41
我只能说牛,
作者:
大西洋
时间:
2015-5-11 14:00
thoris 发表于 2015-5-10 22:57
不是把字符串reverse一下 和原来equals一下就可以了么
是不是用StringBuffer的reverse??
这个想法也很牛!简单易行;
我当时做的时候用的是判断首尾和中间是否相等。。。看来想多了。。。
作者:
1017161726
时间:
2015-5-11 18:39
用StringBuilder.反转再equal是,很方便。不需要你这么麻烦的。前几天有个活动里有这一题
作者:
JARVIS_YJ
时间:
2015-5-11 18:49
thoris 发表于 2015-5-10 22:57
不是把字符串reverse一下 和原来equals一下就可以了么
牛X....好睿智
作者:
代码搬运1号
时间:
2015-5-11 23:01
赞一个!!!!!!
作者:
wkz_crystal
时间:
2015-5-11 23:13
最简单的思想就是把原字符串逆转得到新的字符串,新字符串和原来的字符串内容一样,就说明是对称的,不是一致的,就不是对应的字符串
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2