判断回文字符串(给定开始位置和字符个数)

来源:互联网 发布:死侍 知乎 编辑:程序博客网 时间:2024/06/07 05:12

介绍:

    一个字符串从前往后读和从后往前读得到的是同样的字符串,这就是回文字符串。求一个字符串,从k开始,长度为L的字符串是否为回文字符串

分析:

    1.直接截取从k开始长度为L的字符串    2.对这个字符串进行遍历,判断首尾是否相同,如果相同则继续遍历,有一个不同就返回false。

实现:

public class 回文字符串 {    public static void main(String[] args) {        System.out.print("该子段是否为回文字符串?答案:"+judgeHuiWen1("abbba",0,5));    }    //方法1    private static boolean judgeHuiWen1(String str, int start, int length) {        char arr[] = str.toCharArray();        int end = start + length -1;        if(start>str.length()||(start+length)>str.length()){//这里是对不合法输入的处理            System.out.println("输入的参数有问题");            return false;        }        //遍历整个字符串        for(int i=0;i<length;i++){            //当开始位置大于等于结束位置时,就说明已经遍历完毕,因为一个从头往后走,一个从后往前走。到中间就没必要再继续循环了。节约资源。            if(start>=end){                break;            }            //当arr[start]等于arr[end]的时候,就需要start++,end--,然后继续循环            if(arr[start] == arr[end]){                start++;                end--;                continue;            }else if(arr[start]!=arr[end]){                return false;            }        }        return true;    }    //方法2,和方法1差不多,只是方法1用的数组下标来获取字符,方法2用的字符串的charAt方法获取字符,原理相同。    private static boolean judgeHuiWen2(String str,int start,int length){        String newstr = str.substring(start,start+length);        int len = newstr.length();        for(int i=0;i<len;i++){            char a = newstr.charAt(i);            char b = newstr.charAt(len-1);            if(i>=len){                break;            }            if(a == b){                len--;                continue;            }else if(a != b){                return false;            }        }        return true;    }

总结:

  我记得之前做过一道蓝桥杯的练习题,说是:求四到五位的回文数,并且各个位数的和为1-54之间的值。  我当时特别笨,因为不知道charAt这个方法,所以我疯狂的用for循环来嵌套,到最后我套了6层for循环,而且还没做出来。后来请教别人,知道了charAt()这个方法,只需要几行代码就可以实现。  所以还是得多看看api,没准里面的哪个方法可以直接解决我们的问题。
0 0