本帖最后由 赵晓海 于 2013-11-17 23:01 编辑
回文的概念是:一串字符串从前往后读和从后往前读都是一样的,比如:”123aba321“,”123abba321“ 都是回文。- int j;
- int i;// 这里为什么要定义两个变量?它们是用来做什么的
- char[] arr=str.toCharArray();//并且在这里定义一个字符型的数组,将字符串转换成数组toCharArray这里的C要大写
- for (i =0,j=arr.length-1; i<j; i++,j--)//这个条件语句为什么要这样写?
- {
- if(arr[i] != arr[j]){//这是判断什么的?
- break;
- }}//?
- }
- if(i>=j)//这里又是判断什么的?
- {
- System.out.println("是回文");
- }else
- {
- System.out.println("不是回文");
- }
- }
复制代码 这段代码的思路是这样的:
如果是回文,那么它一定是对称的,比如"123aba321"和“123abba321“。如果是你来判断这两个是不是回文的话,你肯定是先看这两个字符串的第一个和最后一个是不是一样,然后看第二个和倒数第二个是不是一样,依次类推,直到判断至中间。
如果用代码实现的话,那么就需要两个变量,一个从头至尾取,另一个倒着取。这两个变量就分别对应着"arr[ i ]"和"arr[j]";
i=0,j=arr.length-1; i<j; i++,j-- 这句里面"i"是从头开始计数,"j"是从尾开始计数,当然是i++,j--。你自己去数一数回文,判断到最后,第一个i=j,第二个i<j;
"arr[ i ] != arr[j]"这里是说如果取出的两个字符不相等,那么就可以判断不是回文了。不是回文的例子也好举"123adb321",数一下立刻就清楚了。 |