zoukankan      html  css  js  c++  java
  • 判断字符串是否可以通过循环移位得到

    package 算法;
    /**
     * 字符串ABCD,可以由字符串BCDA或者CDAB通过循环移位而得到。
     * 请编程实现以下检测:字符串S1是否可以由字符串S2通    过循环移位而得到。 
     * 语言不限(推荐C/C++,不推荐写伪码)
     * @author chengpeng
     *
     */
    public class RotateString {
        private static void reverseCharArr(char[] arr, int left, int right) {
            if (arr == null || left > right) return;
     
            while (left < right) {
                char tmp = arr[left];
                arr[left] = arr[right];
                arr[right] = tmp;
     
                left++;
                right--;
            }
        }
     
        public static void main(String[] args) {
            System.out.println(isRotate("ABCD", "DABC"));
        }
     
        private static String rotate(String str, int i) {
            if (str == null || i > str.length()) return null;
     
            char arr[] = str.toCharArray();
            reverseCharArr(arr, 0, i-1);
            reverseCharArr(arr, i, arr.length-1);
            reverseCharArr(arr, 0, arr.length-1);
     
            return new String(arr);
        }
     
        public static boolean isRotate(String s1, String s2) {
            if (s1 == null || s2 == null || s2.length() != s1.length()) return false;
     
            int indexOfFirst = s2.indexOf(s1.charAt(0));
     
            if (indexOfFirst == -1) return false;
     
            System.out.println(indexOfFirst);
     
            String tmp = rotate(s2, indexOfFirst);
            System.out.println(tmp);
     
            if (tmp.equals(s1)) {
                return true;
            }
            return  false;
        }
     
     
    }
  • 相关阅读:
    微软企业库5.0学习笔记实战数据验证模块高级篇
    总结一些常用的CMS
    JS类库
    sql2
    前端开发必须知道的CSS
    JS实现非图片动态loading
    Microsoft SQL Server 2005 提供了一些工具来监控数据库
    js实现Tooltip
    Js动画基础
    仿iGoogle自定义首页模块拖拽
  • 原文地址:https://www.cnblogs.com/chengpeng15/p/5976902.html
Copyright © 2011-2022 走看看