• [编程题] 字符串成环判断是否为回文字符串--字节跳动笔试题


    字符串成环判断是否为回文字符串

    题目描述

    输入一个字符串,将该字符串首尾成环,判断能否从中某位置切分,然后产生回文字符串,是则输出Yes,否则输出No

    示例

    例如1:

    输入(字符串)
    aab
    成环后从a a 中切分,得到回文字符串:
    aba
    输出:Yes
    

    Java代码

    package ncompanydemos.p2_bytedance;
    
    import java.util.Scanner;
    
    /**
     * @author jiyongjia
     * @create 2020/7/4 - 15:03
     * @descp: 输入一个字符串,将该字符串首尾成环,判断能否从中某位置切分,然后产生回文字符串
     *
     * 例如:aba 成环后从a a 中切分,得到回文字符串 aba 输出Yes,是回文字符串
     */
    public class Exam02 {
        public static void main(String[] args) {
            Scanner scanner = new Scanner(System.in);
            String s = scanner.nextLine();
            //调用
            String res = solve(s);
            System.out.println(res);
        }
    
        public static String solve(String s){
            char[] chars = s.toCharArray();
    
            for (int i = 0; i < chars.length; i++) {
                int length = chars.length;
                StringBuilder stringBuilder = new StringBuilder();
                int cur=i;
                while (length>0){
                    stringBuilder.append(chars[cur%(chars.length)]);
                    cur++;
                    length--;
                }
                //调用回文判断
                boolean compare = compare(stringBuilder.toString());
                if (compare){
                    return "Yes";
                }else {
                    continue;
                }
            }
            //如果判断完还是没有回文的,返回No
            return "No";
        }
    
        //字串回文判断
        private static boolean compare(String s) {
            char[] chars = s.toCharArray();
            int left = 0;
            int right = chars.length-1;
            int flag = chars.length/2;
            while (flag>0){
                if(chars[left]!=chars[right]){
                    return false;
                }else {
                    left++;
                    right--;
                    flag--;
                }
            }
            return true;
        }
    }
    
    

    测试输出

    测试1

    image-20200704152916012

    测试2

    image-20200704152934691

  • 相关阅读:
    [Java]java内存及数据区
    [ASP.NET]ASP.NET中常用的26个优化性能方法
    [Oracle]Oracle数据库CPU利用率很高解决方案
    [JAVA]java复制文件的4种方式
    [Oracle]Oracle部分函数
    [Oracle]Oracle良性SQL建议
    序列化与反序列化
    Python用@property使类方法像属性一样访问
    笔记(assert 断言)
    Python使用__slots__限制实例属性
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13235059.html
Copyright © 2020-2023  润新知